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

那么问题:

一种。为什么选择框不像输入字段那样预先填充?

湾。我真的必须像这样手动预填充吗?

// 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 回答