0

私はCodeIgniter、HMVCライブラリ、Smartyをこのライブラリで使用しています。

Smartyはデフォルトで正常に動作していますが、smartyの継承機能({extends file="master.tpl"})を使用しようとすると、問題が発生します。

拡張機能は、モジュールビューフォルダで拡張ファイルを検索しません(上記の場合master.tpl)。代わりに、application/views/フォルダを検索し、見つからない場合はエラーをスローします。

smarty構成ファイルAPPPATH."modules/smartytest/views"のアレイに追加できます。$config['template_directory']ただし、最初にファイルをチェックする配列内の各項目に対してエラーがスローされます。filemtime(): stat failed for application/views/master.tpl

これには、3つのモジュールがあり、すべての配列があり、モジュールがすべてmaster.tplである場合、どのモジュールから拡張を呼び出しても、最初に見つかったモジュールが読み込まれるという追加の問題があります。

では、smartyのextend関数をHMVCモジュールでうまく動作させる方法はありますか?

4

2 に答える 2

0

ああ、実用的な解決策を見つけました、

My_Parser.php30行目のブロックを編集して次のようにします。

// 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');
}

この方法の1つの欠点は、smartyがモジュールviewsフォルダーの前にapplication/viewsフォルダーを検索することです。誰かがそれに対する解決策を知っているなら、それは素晴らしいでしょう。

于 2012-06-20T01:27:25.900 に答える
0

問題は、CI が error_reporting() が 0 を返すことをチェックしていないことです。これは、Smarty が @ 制御演算子を使用しているためです: 関数「_exception_handler」の先頭に次の行を追加します。

if (error_reporting() == 0) return;

"_exception_handler" 関数内の "Common.php" ファイルに対して (469 行目)、または index.php ファイル内の "CodeIgniter.php" を呼び出す前に、同じ名前で独自の関数を作成します。

一番!

于 2013-12-16T19:13:14.437 に答える