我正在使用Laravel 5.1的视图组合器:很不错。但是我该如何向视图组合器传递参数呢?
在我的情况下,我通过视图组合器向视图发送周信息(包括前一周、本周和下一周的日期)。当前周是一个变量,不仅来自于url,还来自于控制器。
public function compose(View $view)
{
// I need a parameter here (integers)
}
我正在使用Laravel 5.1的视图组合器:很不错。但是我该如何向视图组合器传递参数呢?
在我的情况下,我通过视图组合器向视图发送周信息(包括前一周、本周和下一周的日期)。当前周是一个变量,不仅来自于url,还来自于控制器。
public function compose(View $view)
{
// I need a parameter here (integers)
}
public function __construct(array $data)
{
$this->data = $data;
}
public function compose()
{
$data = $this->data;
View::composer('partial_name', function( $view ) use ($data)
{
//here you can use your $data to compose the view
} );
}
控制器
public function index()
{
//get the data you need
$data = ['first_value' = 1];
//pass the data to your wapper class
$composerWrapper = new ComposerWrapper( $data );
//this will compose the view
$composerWrapper->compose();
//other code...
}
在控制器中传递给视图的所有数据都将在视图控制器中可用。像这样在视图实例上使用 getData
方法:
$view->getData()["current_week"];
public function compose(View $view)
{
$current_week = $view->getData()["current_week"];
//use $current_week as desired
}
request()->route()->getParameter('week_number');
$view->current_week
。View 上的魔术 _get() 方法应该可以很好地处理它。 - musicin3d我认为如果你想从控制器将一些数据传递给视图组合器,那么你可以使用会话。在控制器中设置数据到会话中,然后你就可以在视图组合器中获取会话中的数据。这对我来说是一个简单的解决方案,而不需要做任何复杂的事情。
控制器
public function index()
{
session(['key' => 'value']);
return view('your_view');
}
视图组合器
public function compose(View $view)
{
$data = session('key');
return $view->with('your_data',$data);
}