Laravel 4.2 将变量传递给主布局
Posted
技术标签:
【中文标题】Laravel 4.2 将变量传递给主布局【英文标题】:Laravel 4.2 Pass Variable to master layout 【发布时间】:2016-11-08 15:02:58 【问题描述】:如何将变量传递到模板中的特定页面
现在我的横幅中有一个滑块,我需要将 var 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
的新文件夹
在名为Repositories
的Acme
中添加新文件夹
在Repositories
中声明了新的类并称之为HomePageSlider.php
这是我的新课程的样子
class HomePageSlider
public function getAll()
$getSlider = Slider::all();
return $getSlider;
现在在我的主页控制器中,我像这样使用它use Acme\Repositories\HomePageSlider;
然后我把方法和__construct
这样放
受保护的 $slider;
public function __construct(HomePageSlider $slider)
$this->slider = $slider;
\View::share('sliders', $this->slider->getAll());
);
【问题讨论】:
所有视图都使用此滑块吗? @Rimon Khan 对不起,我没有收到你的问题 是每页还是单页都使用这个滑块? @Rimon Khan 不只是第一页 在您的场景中,您应该通过View::Composer()
传递滑块变量
【参考方案1】:
你应该这样做:
protected $layouts = 'includes.slider';
public function index()
$slider = Slider::all();
$data = array('sliders' => $slider);
$this->layout->with('sliders', $data['sliders']);
然后你可以在你的视图中使用变量$sliders
。
你也可以使用compact方法,所以通过使用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'));
【讨论】:
仍然遇到同样的错误Undefined variable: sliders
但是这个slider.blade
在我的布局中它不是return
的页面,我需要将变量传递给布局以上是关于Laravel 4.2 将变量传递给主布局的主要内容,如果未能解决你的问题,请参考以下文章
如何将变量传递给 Laravel 中的 http 错误布局?
如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件