1

Kohana 3.2 は、HMVC デザイン パターンをサポートするように設計されました。HMVC パターンは、ネストされた MVC トライアドで構成されます。しかし、私が知る限り、Kohana のカスケード ファイル システムでは、すべてのモデルとコントローラーを最上位の「classes」ディレクトリに配置し、ビューを最上位の「views」ディレクトリに配置する必要があります。このようにモデル/コントローラーがファイル システムのトップ レベルでビューから分離されている場合、ネストされた MVC トライアドをどのように実装すればよいのでしょうか?

ここに画像の説明を入力

4

2 に答える 2

2

ビューの処理方法をハックするかどうかはわかりませんが、関数が必要なディレクトリを受け入れるようにKohana_Viewクラスを拡張できます。set_filename()

コントローラー/モデルに似た自動読み込み機能が必要な場合は、自分で実装できます。

例(未テスト):

public function set_filename($view)
{        
    // Transform the class name into a path
    $file = str_replace('_', '/', strtolower($view));

    if ($path = Kohana::find_file('classes', $file))
    {
        // Store the file path locally
        $this->_file = $path;

        return $this;
    }  

    throw new View_Exception('The requested view :view could not be found', array(
        ':view' => $view,
    ));
}
于 2011-11-13T01:19:26.457 に答える
2

しかし、私が知る限り、Kohana のカスケード ファイル システムでは、すべてのモデルとコントローラーを最上位の「classes」ディレクトリに配置し、ビューを最上位の「views」ディレクトリに配置する必要があります。

あなたが望むのは、Kohana 2、codeigniter、およびコントローラー、モデル、およびビュー専用のフォルダーを持つ他のフレームワークのようなフォルダー構造です。Kohana 3 には、クラス専用のフォルダーがあります。Kohana 3 の構築方法では、コントローラーに Controller_ プレフィックスを付ける必要があります。Kohana 3 オートローダーは、classes/controller フォルダーで Controller_ プレフィックスを持つクラスを探します。

次に、Kohana 3 には非常に基本的な Model クラスと View クラスも付属しています。私の知る限り、Kohana 3 コアは Model クラスを使用しておらず、View クラスを使用するのはごくわずかです。ただし、モデルに Model_ プレフィックスを付ける規則は Model::factory() にありますが、強制されていません。それらを使用する必要はありません。

View クラスは、de ビュー フォルダーでテンプレートを探します。(Zombor では推奨されていません) Zombor (開発者の 1 人) による View_Module もたまたまそこに見えます。(Zombor によって推奨されている) KOstacheモジュールは、Zombor によって再び、templates フォルダー内のテンプレートを探します。どちらのモジュールでも、View-Model クラスを作成できます。慣例では View_ プレフィックスを付けて、最終的にクラス/ビューになります。ただし、views フォルダーに入れ、その View-Model のパスをハードコードするすべてのテンプレートの View を拡張する View_ クラスを作成することを止めるものは何もありません。

クラス フォルダはクラス専用であることに注意してください。

于 2011-11-13T01:47:52.427 に答える