如何将变量传递到模板中的特定页面
现在我的横幅中有一个滑块我需要将变量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
我出来了
Acme
Acme
Repositories
中添加新文件夹
在Repositories
中声明了新课程并将其命名为HomePageSlider.php
这是我的新班看起来像
class HomePageSlider
{
public function getAll()
{
$getSlider = Slider::all();
return $getSlider;
}
}
现在在我的主页控制器中我使用它use Acme\Repositories\HomePageSlider;
然后我把方法和__construct
像这样
protected $ slider;
public function __construct(HomePageSlider $slider)
{
$this->slider = $slider;
\View::share('sliders', $this->slider->getAll());
});
}
答案 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'));
}