Laravel 5.1:将数据传递给View Composer

时间:2015-12-08 10:06:48

标签: php laravel view laravel-5 laravel-5.1

我在Laravel 5.1中使用视图编辑器:很好。 但是如何将参数传递给视图编辑器

在我的情况下,我使用de view composer将周信息(上一个,当前,下周,包括日期)发送到我的视图。本周是可变的,不仅来自网址,还来自控制器。

public function compose(View $view)
{
   // I need a parameter here (integers)
}

3 个答案:

答案 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);
    }