Laravel 3: представление не существует

Я только что унаследовал сайт Laravel 3, который работает на собственной CMS. Вывод CMS отображается через папку темы на уровне /, поэтому моя структура папок выглядит следующим образом:

-application
-bundles
-laravel
-public
-storage
-theme
  -errors
  -layouts
    -partials

Я создал поисковый контроллер в "/ application / controllers" и хочу создать свое представление для вывода в папке "/ theme / layouts" с другими файлами шаблонов. Когда я раньше работал с Laravel, все мои представления находятся в "/ application / views", и я могу указать свое представление с помощью:

public $layout = 'layouts.default';

.. который будет использовать '/application/views/layouts/default.blade.php'

Как я могу заставить свой контроллер отображать представление, используя мой файл '/theme/layouts/searchTemplate.php', и передавать данные поиска из контроллера?

2 ответа

Если вам действительно нужно поместить эти файлы в отдельную папку, вам, вероятно, следует использовать комплекты (см. Документы).

Однако, быстрое и грязное решение состоит в том, чтобы добавить хук в событие загрузчика представления (application/start.php):

Event::listen(View::loader, function($bundle, $view)
{
    if($bundle == 'theme') {
        return View::file('application', $view, Bundle::path('application').'theme');
    }

    return View::file($bundle, $view, Bundle::path($bundle).'views');
});

Затем вы можете сделать вид как:

View::make('theme::layouts.default');

который загрузит файл "application / theme / layouts / default.blade.php".

В папке вашего приложения есть папка с именем 'views'. Вы должны создать файл default.php в приложениях / views / layouts /

С 'layouts.defaults' он ищет в папке представлений папку, которая будет называться макетами.

Таким образом, полная папка для layouts.default будет выглядеть так: ./application/views/layouts/default.php

Изменить: ответ больше не является относительным

Другие вопросы по тегам