0

私はJoomlaと彼らがMVCアーキテクチャを実装する方法に比較的慣れていません。それは私がそれに慣れている方法(Code Igniterなど)とは少し異なり、単にデータをビューに渡すだけでいくつかの問題が発生します。

コントローラに「getInitClubs」という関数を作成しました。この関数はページの実行時に自動的に実行されるため、「view.html」ファイルからこの関数を呼び出しました。

これが私のコードです:

コントローラ機能:

public function getInitClubs() {
        $model =& $this->getModel('directory');
        $init_clubs = $model->clubResults($conds = array());
        return $init_clubs;
    }

モデル機能:

public function clubResults($conds) {
    $query = "SELECT * FROM vyj20_contact_details";
    if(isset($conds['city'])) {
        $query .= " WHERE state = '" . mysql_escape_string($conds['city']) . "'";
    }
    if(isset($conds['suburb'])) {
        $query .= " AND suburb = '" . mysql_escape_string($conds['suburb']) . "'";
    }
    $this->_db->setQuery($query);
    $results = $this->_db->loadObjectList();
    return $results;
}

これで、モデルとコントローラーコードが機能することがわかりました。これは問題ではありません。問題は、実際にはコントローラー関数'getInitClubs'から結果を取得し、ビューに表示することです。

表示用の結果を収集するために、ビューからコントローラー関数を呼び出すにはどうすればよいですか(Code Igniter MVCの場合と同様)。私は試してみましたが、それを理解できないようです!ありがとう

4

2 に答える 2

1

JViewインスタンスにはgetModel()メソッドがあります。すべてのコンポーネント間で共有される静的レジストリにアクセスするモデル インスタンスを取得します。JControllerインスタンスでは、そのモデルの状態を変更する必要があり、インスタンスでJViewはデータを引き出す必要があります。

MVC デザイン パターンのビューは、モデル レイヤーから情報を取得し、テンプレートを使用してレンダリングするか、場合によっては単純な HTTP ヘッダーを送信するだけであると想定されています。この点で、Joomla は MVC パターンを驚くほどうまく取り入れています。

PS PHP 5.0 がリリースされて以来 (2005 年頃)、オブジェクトを割り当てるときに参照を使用する必要はありません。refcountを台無しにするため、実際には有害です。

于 2012-10-31T14:31:17.883 に答える
0

コントローラー機能は次のようになります。

$model =& $this->getModel('directory');
$init_clubs = $model->clubResults($conds = array());
$view = $this->getView('view_name', 'html'); // get the view
$view->assignRef('data_list', $init_clubs); // set the data to the view
$view->display(); // show the view

続きを読む

Model-View-Controller コンポーネントの開発

モデル ビュー コントローラー

Model-View-Controller コンポーネントの開発/

モデル ビュー コントローラー

于 2012-11-01T08:59:29.773 に答える