与智者的继承使用Smarty的3,代码点火器2,和HMVC在一起呢?(Using Smarty 3,

2019-10-31 19:38发布

我使用的代码点火器,该HMVC库 ,并与Smarty的这个库 。

Smarty的默认情况下工作正常,但是如果我尝试使用Smarty的继承特性( {extends file="master.tpl"}那么我们遇到的问题。

该扩展功能不会在模块views文件夹寻找扩展文件(在上述的情况下master.tpl ),而不是仅看在application/views/文件夹,并抛出一个错误,如果它不能找到它。

我可以添加APPPATH."modules/smartytest/views"$config['template_directory']数组中的智者配置文件。 但抛出用于阵列中的它首先检查文件的每个项目的错误。 filemtime(): stat failed for application/views/master.tpl

和具有的附加问题,如果我有三个模块的所有阵列和模组都那么master.tpl不管我所说的模块扩展,从它会加载找到的第一个。

那么,有没有办法让Smarty的扩展功能与HMVC模块很好的表现?

Answer 1:

嗯,找到了工作方案,

My_Parser.php在管线30编辑块,所以它读取:

// Modular Separation / Modular Extensions has been detected
if (method_exists( $this->CI->router, 'fetch_module' ))
{
    $this->_module  = $this->CI->router->fetch_module();
    //add the current module view folder as a template directory
    if ($this->_module !== '')
        $this->CI->smarty->addTemplateDir(APPPATH."modules/".$this->_module.'/views');
}

这种方法的一个缺点是,智者会看在你的应用程序/视图的模块意见文件夹之前夹。 如果有人知道解决这一那么这将是梦幻般的。



Answer 2:

问题是,CI不检查使用error_reporting()返回0,因为Smarty的使用@控制操作:所以在功能“_exception_handler”的顶部添加一行:

if (error_reporting() == 0) return;

要在“_exception_handler”功能(线469)的“的common.php”文件,或者在index.php文件调用“CodeIgniter.php”之前创建具有相同的名称自己的函数。

最好!



文章来源: Using Smarty 3, Code Igniter 2, and HMVC together with smarty's inheritance?