Laravel 4.2 передать переменную в главный макет

как передать переменную на определенную страницу в шаблоне

теперь у меня есть слайдер в моем баннере, мне нужно передать varslidersslider.blade, который находится под includes

Карта проекта

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

вот что я попробовал в контроллере

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. Добавить новую папку в Acmeвызываемую Repositories
  3. объявлен новый класс Repositoriesи вызвал его HomePageSlider.php
    вот мой новый класс выглядит как

    class HomePageSlider
    {
        public function getAll()
        {
            $getSlider = Slider::all();
            return $getSlider;
        }
    }
    

  4. теперь в моем контроллере домашней страницы я использовал его так use AcmeRepositoriesHomePageSlider;

  5. а потом я ставлю методы и __constructвроде этого

    защищенный $ slider;

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

1 ответ

  1. Вы должны сделать, как это:

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

    Затем можно использовать переменную $slidersв представлении.

    Вы также можете использовать компактный метод, поэтому с помощью компактного метода вы можете сделать, как:

    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'));
    }