1

私はMVCプログラミング(およびオブジェクトベースでさえ)が初めてです。PhP 4.* から来て、OOP、MVC、Cake に移行しました。

私は、さまざまな国の機関がデータを保存するために使用できるサイトを構築しています (およびその他)。私は現在、機関ごとの基本的な登録を作成しており、国のドロップダウンを含めたいと考えています。

これには 2 つの方法があります。Country モデルを使用して、ドロップダウンの国のテーブル情報を取得します: $this->set('countries', ClassRegistry::init('Country')->getAllCountries()); (\Model\Country.php の関数が続きます)

または InstitutesController を使用します。
$this->set('countries', $this->Institute->Country->find('list', $params = array('fields' => array('id', 'country'))));

両方とも機能しているように見えるため、どちらのルートを取ることをお勧めしますか?

4

1 に答える 1

0

2 番目のものを使用します。

$this->set('countries', $this->Institute->Country->find('list', $params = array('fields' => array('id', 'country'))));

どちらも機能しますが、国モデルのインスタンスを既に取得しています ($this->Institute->Country からアクセスできます)。では、なぜ別のインスタンスを作成するのでしょうか? 必要はありません。

実際には、find メソッドを呼び出すためにフィールドを指定する必要はありません。「id」は最初のフィールドとして自動的に選択され、Country モデルの表示フィールドを「country」に設定すると、それが find('list') 呼び出しでデフォルトで使用されます。次のようにします。

// just after class Country extends AppModel {
public $displayField = 'country';

次に、次のコードを使用するだけです。

$this->set('countries', $this->Institute->Country->find('list'));
于 2013-10-13T22:51:17.067 に答える