我在Laravel 5.1中使用视图编辑器:很好。 但是如何将参数传递给视图编辑器?
在我的情况下,我使用de view composer将周信息(上一个,当前,下周,包括日期)发送到我的视图。本周是可变的,不仅来自网址,还来自控制器。
public function compose(View $view)
{
// I need a parameter here (integers)
}
答案 0 :(得分:7)
如果必须将参数从控制器传递给视图编辑器,则可以为编写器创建包装类,并在需要时将数据传递给它。然后,当您完成数据设置后,您可以撰写视图:
ComposerWrapper类
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...
}
答案 1 :(得分:3)
您在控制器中传递给视图的所有数据将在视图控制器中可用。在视图实例上使用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');
答案 2 :(得分:0)
我认为,如果您想将某些数据从控制器传递给View Composer,则可以使用会话。在会话中从控制器设置数据,您可以在视图编辑器中从会话获取数据。不需要做任何复杂的事情,这对我就成功了
控制器
public function index()
{
session(['key' => 'value']);
return view('your_view');
}
View Composer
public function compose(View $view)
{
$data = session('key');
return $view->with('your_data',$data);
}