Как загрузить представление из альтернативного каталога в Laravel 4


В корневом каталоге моего приложения Laravel 4 у меня есть папка themes. Внутри themes папка, у меня есть default и azure. Как я могу получить доступ к просмотру из этого themes/default папка в определенном маршруте.

Route::get('{slug}', function($slug) {
    // make view from themes/default here
});

Моя структура каталогов:

- приложение

-- темы

--- по умолчанию

--- лазурный

Мне нужно загрузить представления из папки localhost/laravel/app/themes/default. Пожалуйста, объясните это.

Author: Laurence, 2013-09-23

4 answers

Это вполне возможно с Laravel 4. То, что вам нужно, на самом деле является средой просмотра. Вы можете зарегистрировать подсказки пространства имен или просто дополнительные местоположения, которые также будут каскадироваться в finder. Взгляните здесь

Вы бы добавили местоположение примерно так:

View::addLocation('/path/to/your/views');

Возможно, было бы проще, если бы вы назвали их пространствами имен, на случай, если у вас есть конфликтующие имена файлов, поскольку ваш путь добавляется к массиву, поэтому он будет каскадироваться только до тех пор, пока не найдет подходящее совпадение. Пространство имен представления загружаются с помощью синтаксиса двойного двоеточия.

View::addNamespace('theme', '/path/to/themes/views');

return View::make('theme::view.name');

Вы также можете предоставить addNamespace массив путей представления вместо одного пути.

 37
Author: Chirag Shah, 2013-09-23 09:15:34

Здесь я не получаю доступ к своему проекту из public папка. Вместо этого я получаю доступ из самого корневого каталога проекта.

Я видел дискуссию на форуме о Using alternative path for views здесь. Но меня это немного смущает.Обсуждаемое решение заключалось в следующем:

Вы бы добавили location например,

View::addLocation('/path/to/your/views');

Затем добавьте namespace для темы,

View::addNamespace('theme', '/path/to/themes/views');

Затем визуализируйте его,

return View::make('theme::view.name');

Каким будет значение для /path/to/?

Могу ли я использовать один и тот же проект в другой операционной системе без изменения пути?

Да, мы можем сделать это, используя следующее,

Поместите следующее в app/start/global.php

    View::addLocation(app('path').'/themes/default');
    View::addNamespace('theme', app('path').'/themes/default');

Затем вызовите представление, как по умолчанию,

    return View::make('page');

Это приведет к отображению page.php или page.blade.php файла из папки project_directory/app/themes/defualt.

 26
Author: devo, 2014-03-10 12:03:36

Я разработал пакет тем для laravel 5 с такими функциями, как:

  • Просмотры и разделение ресурсов в папках тем
  • Наследование темы: Расширяйте любую тему и создавайте иерархии тем

Попробуйте здесь: igaster/laravel-тема

 2
Author: igaster, 2015-03-01 20:39:15

\View::addLocation($directory); работает нормально, но новый правильный способ сделать это - использовать loadViewsFrom($path, $namespace) (доступно у любого поставщика услуг).

 0
Author: Mahmoud Zalt, 2017-02-28 20:14:57