Laravel 4.2将变量传递给主布局

时间:2016-11-08 15:02:58

标签: php laravel laravel-blade

如何将变量传递到模板中的特定页面

现在我的横幅中有一个滑块我需要将变量sliders传递给slider.blade下的includes

项目地图

project
-local
--app
---views
----includes (holds : header, head, footer, **slider**)

这是我在Controller中尝试的内容

protected $layouts = 'includes.slider';

public function index()
{
    $slider = Slider::all();
    $data = array('sliders' => $slider);
    $this->layout->with('slider.sliders', $data);
}

这就是我在slider.blade

中尝试的内容
@if($sliders)
    <h1>TEST</h1>
@endif

但我收到了错误

  

未定义的变量:滑块

修改

回顾View Composers我出来了

  1. 在我的应用中添加名为Acme
  2. 的新文件夹
  3. 在名为Acme
  4. Repositories中添加新文件夹
  5. Repositories中声明了新课程并将其命名为HomePageSlider.php 这是我的新班看起来像

    class HomePageSlider
    {
        public function getAll()
        {
            $getSlider = Slider::all();
            return $getSlider;
        }
    }
    
  6. 现在在我的主页控制器中我使用它use Acme\Repositories\HomePageSlider;

  7. 然后我把方法和__construct像这样

    protected $ slider;

    public function __construct(HomePageSlider $slider)
    {
        $this->slider = $slider;
        \View::share('sliders', $this->slider->getAll());
        });
    }
    

1 个答案:

答案 0 :(得分:0)

你应该这样做:

protected $layouts = 'includes.slider';

public function index()
{
    $slider = Slider::all();
    $data = array('sliders' => $slider);
    $this->layout->with('sliders', $data['sliders']);
}

然后,您可以在视图中使用变量$sliders

你也可以使用compact方法,所以使用紧凑的方法你可以这样做:

public function index()
{
    $sliders = Slider::all();
    return View::make('your_desirde_view_name', compact('sliders'));
    // Or can also do it as (if content is been echoed in layout...)
    // $this->layout->content = View::make('your_desirde_view_name', compact('sliders'));
}