0

セクションに分割する巨大なフォームがあります。各セクションには独自のモデルがあります。信じられないほどの量のドロップダウンがあります。それらはちょっと似ているので、私がやりたいのは、php 変数を呼び出してオプションを追加できるようにすることです。タイプミスがないことが保証され、変更が必要な場合は 1 か所で変更できます。

次のような言語ドロップダウンがある場合:

echo $this->Form->input(__('Language'), array(
    'options' => array('en' => 'English', 'fr' => 'Français')
));

$this->Form->input(__('Language'), $languages); ができたらいいですね。$language では、変数を使用してこれらの言語を追加することもできます。$languages = array('options' => $option1, $option2...); そんな感じ。

1000 のドロップダウンを管理する最善の方法を見つけようとしています。

どうすればそれができますか?

4

1 に答える 1

0

AppControllerで、beforeRenderコールバックの言語オプションを設定します。-

public function beforeRender() {

    parent::beforeRender();

    $this->set('languages', array('en' => 'English', 'fr' => 'Français'));

}

次に、関連するビューで使用できます:-

$this->Form->input(__('Language'), $languages);

言語モデルを作成し、その中に言語を保存し、モデルでfind('list')を使用してそれらをロードすることは理にかなっています。他のモデルを言語にリンクする必要がある場合は$belongsTo = array('Language')、関連するモデルの関係を使用して、モデルのを保存しlanguage_idます。その後、すべての言語データがデータベースに保存され、1か所で変更できるようになります。

于 2013-02-19T11:32:39.057 に答える