CakePHP根据相关模型上的现有选择预先填充选择框

时间:2011-03-23 22:31:01

标签: arrays forms cakephp select

我正在尝试在编辑记录时使用现有选择预先填充此状态选择框。 在一个相关的模型中。

PLAN_DETAILS / view.ctp

echo $this->Form->input('State',array('empty' => false,'options' => $state));

plan_details_controller查看功能:

$state = $this->PlanDetail->Plan->State->find('list');
    $this->set(compact('state', $state));
    debug($state);

view.ctp中的数组输出(按预期方式):

Array
(
    [1] => Oregon
    [2] => Washington
)

我的选择框在数组中默认为1。我需要它默认为已存在的选定值。

例如,当我添加一个记录和一个选定的华盛顿(2)时,在查看我的编辑屏幕时,预先选择的值应该是值为2的华盛顿。

我被困住了一段时间。知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

如果您正在编辑页面,则需要设置$ this->数据以自动填充它。在您的编辑操作中

if (empty($this->data)) {
     $this->data = $this->PlanDetail->read(null, $id);
}

这应该在记录中读到(注意复数)

$states = $this->PlanDetail->Plan->State->find('list');
$this->set(compact('states'));

在您的表单中应该阅读

echo $this->Form->input('Plan.state_id',array('empty' => false));

我发现你的方法有点令人困惑,但上述方法应该有效。这个表格是用于编辑Plan,PlanDetail还是两者