0

私が持っている場合:

// Controller
$this->Model->id = $id;
$this->request->data['Model'] = $this->Model->read();

その後:

// View (input field)
$this->Form->input('some_field'); // THE FORM FIELD WILL BE PRE-POPULATED

しかし、代わりに選択ボックスにしたい場合:

// View (with select)
$this->Form->select('some_field', $options); // THE SELECT BOX ISN'T PRE-POPULATED

質問:

a. 入力フィールドのように選択ボックスが事前設定されていないのはなぜですか?

b. このように手動で事前入力する必要は本当にありますか?

// View (with select)
$this->Form->select('some_field', $options, array('value' => $this->request->data['Model']['some_field'])); // THE SELECT BOX IS PRE-POPULATED

c. 上記の方法は、すでに値を持っている選択ボックスを事前設定する最も効率的な方法ですか?

4

1 に答える 1

0

いいえ、some_field は、正しく行うと、渡されたフォーム データによって事前設定されます。そこで作成したものをデバッグしましたか?ケーキの標準ではないマルチレベル配列。

正しいアプローチは次のようになります。

$this->request->data = $this->Model->read();

配列にはすでに Model キーが含まれているためです (これは debug() で表示されます!)。ただし、投稿されていない場合にのみこれを行うように注意してください!

最後の質問には、いいえ、可能であればコントローラーを使用するか、少なくともdefault. value検証が失敗した場合、フォームは以前に選択された値を失います。

私の古いcake1.3の投稿もそれに光を当てるかもしれません:http://www.dereuromark.de/2010/06/23/working-with-forms/

于 2012-09-28T13:52:12.153 に答える