Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 04.12.2013 05:24:17

[L4] Как передать переменную в layout?

Здравствуйте, я новичок в Laravel, сильно не пинайте, пожалуйста.
Создал во views папку layouts, там создал файл main.blade.php.

У меня есть два таких метода в контроллере:

public function index()
{
          $this->layout->content = View::make('index', array(
               'page' => Page::where('alias', '=', '/')->firstOrFail(),
           ));
}
public function pages($alias)
{
         $this->layout->content = View::make('pages', array(
              'page' => Page::where('alias', '=', $alias)->firstOrFail(),
          ));
}

Никак не пойму, как мне передать в layout main переменную page?
Спасибо большое.

P.S. Погуглив, нашёл решение с View::share, но так работает, только когда я создам папку includes в папке views и там уже создам head.blade.php файл, а вместо содержимого тэгов head (в main layout) подключу таким образом: include('includes.head').

Изменено Denwebart (04.12.2013 05:24:47)

Не в сети

#2 04.12.2013 07:52:32

Re: [L4] Как передать переменную в layout?

Покажи код шаблонов.

Не в сети

#3 04.12.2013 15:23:04

Re: [L4] Как передать переменную в layout?

Извините, поспешил.
Всё прекрасно работает, когда использую View::share, переменная передаётся в main layout.
Предается как в includes, так и без них, то есть, просто в layout'ы.

Вот мой код контроллера, кому-то обязательно пригодится:

class SiteController extends BaseController
{
    protected $layout = 'layouts.main';

    public function index()
    {
        $this->layout->content = View::make('index');
        View::share('page', Page::where('alias', '=', '/')->firstOrFail());
    }

    public function pages($alias)
    {
        $this->layout->content = View::make('pages');
        View::share('page', Page::where('alias', '=', $alias)->firstOrFail());
    }
}

Вопрос решён, можно закрывать тему.

Не в сети

Подвал раздела