Lithium: загрузить вид из библиотеки

Я работаю над сторонней библиотекой в PROJECTROOT/libraries/mylib, иметь контроллер в mylib/controllers, который работает. li3 говорит мне, что ожидает представления в PROJECTROOT/app/views/ - как я могу загрузить вид из mylib/views вместо app?

1 ответ

Это может быть легко достигнуто установкой путей рендеринга в контроллере. Вероятно, вы захотите сделать это для каждого контроллера в mylib, поэтому хорошая идея - BaseController, от которого извлекаются все контроллеры. Затем вы можете использовать литиевый метод по умолчанию с именем _init() для настройки конфигурации следующим образом:

class BaseController extends \lithium\action\Controller {

    public function _init() {
        parent::_init();

        $this->_render['paths'] = array(
            'template' => array(
                LITHIUM_APP_PATH . '/views/{:controller}/{:template}.{:type}.php',
                '{:library}/views/{:controller}/{:template}.{:type}.php',
            ),
            'layout' => array(
                LITHIUM_APP_PATH . '/views/layouts/{:layout}.{:type}.php',
                '{:library}/views/layouts/{:layout}.{:type}.php',
            ),
            'element' => array(
                LITHIUM_APP_PATH . '/views/elements/{:template}.{:type}.php',
                '{:library}/views/elements/{:template}.{:type}.php',
            ),
        );
    }

Вы можете посмотреть его здесь: https://github.com/bruensicke/radium/blob/master/controllers/BaseController.php

Обратите внимание, что я настроил его таким образом, чтобы приложение могло перезаписывать определенные представления для дальнейшей его настройки.

Кроме того, есть проблема /pull-запрос на github по этой теме, посмотрите здесь:

https://github.com/UnionOfRAD/lithium/pull/650

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