锂:从库中加载视图

时间:2012-08-30 19:21:29

标签: templates plugins view lithium

我正在PROJECTROOT/libraries/mylib开展第三方图书馆工作。在mylib/controllers中有一个控制器,它正在工作。 li3告诉我它需要PROJECTROOT/app/views/中的视图 - 如何从mylib/views而不是app加载视图?

1 个答案:

答案 0 :(得分: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

请注意,我是这样设置的,因此应用程序可以覆盖特定的视图,以便进一步自定义。

此外,github上有关于该主题的问题/请求请求,请看这里:

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