2011-07-29 11 views
1

私はまだJoomlaコンポーネントを作成することを学んでいますが、読んだチュートリアルや本で答えが見つからない状況に遭遇しました。これまでのところ。 私はモデルgetData()を持つモデル(models/weather.php)を持っています。このメソッドはView(view/view.html.php内)から呼び出され、データベースからのレコードの範囲を取得します。 レコードのこの範囲は、その後、このような何かforeachループを使用して(ビュー/ TMPL/default.php)私のレイアウトに貫通して反復される:私がする必要がどのようなJoomlaコンポーネントのレイアウト内からSQLクエリを実行するにはどうすればいいですか?

if ($this->item) { 
    foreach ($this->item as $item) { 
     //... 
    } 
} 

は(コメントの点にあります// ...)$ item-> idの値に基づいて別のテーブルから他のレコードを取得したいとします。私の質問はベストプラクティスに基づいてこれをどうやってやるのだろう?データベースを開いて必要なデータを得ることができると思いますが、MVCベースのプログラムでは、このクエリを関数またはメソッドに入れる必要がありますか?どこに貼り付け、どのように私はそれにアクセスするのですか?例へのリンクは非常に高く評価されるでしょう。

回答: 私はそんなにばかです。明らかに私は自分のレイアウトのビューから任意のメソッドを呼び出すことができ、そのメソッドで私はモデルにアクセスすることができます(ここで私はルックアップ関数を作成できます)。時々、私の心は(まだ)OOPを単に見るだけの手続きである。

答えて

0

でMYITEMを取得するために

$model = & JModel::getInstance('ModelName','ComponentNameModel'); //it will look for ComponentNameModelModelName 

    $myitem = $model->getMyItem($item->id); 

書き込みロジックのようなモデルを取得する必要があります。レイアウトでは、モデルからビュー(view.html.php)を介してすでに取得および処理されたデータのみを表示する必要があります。あなたのモデルに別のメソッドを追加して、そのメソッドをgetDataから呼び出すのはなぜですか?はるかに良いでしょう。

+0

ありがとう、それは答えの一部です。あなたは正しい軌道に乗っています。 – Peter

+0

あなたは大歓迎です –

0

getMyItem()のようなデータを取得したい場所から、他のモデルにメソッドを書き込むことができます。次に、あなたのビューで、あなたはレイアウト(default.php)でデータを処理するために、悪い習慣である、モデルのメソッド

+0

私は、あなたが「ビュー」と言ったところの「レイアウト」を意味すると仮定していますか?それはMVC哲学の中では大丈夫と考えられるでしょうか?私はレイアウトでこれをインスタンス化することを「許可しない」と仮定していましたか? – Peter

+0

私は、レイアウトであなたのロジックを書くならば、それは不合理であることを意味します。つまり、MVCで私はVを意味します。Joomlaではdefault.phpではなく、view.html.php – Ehtesham

関連する問題