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 的新文件夹 在名为RepositoriesAcme 中添加新文件夹

    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 错误布局?

获取第二个窗口将变量传递给主 ui 并关闭

如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件

QT多线程问题:子线程中的变量如何传递给主线程?

@include 之后刀片未在刀片中显示内容 - Laravel 4.2

将变量传递给Laravel {{route}}帮助器