CakePHP-一个页面上有两个模型,无法获取此->请求->数据自动控制字段填充
我有两个控制器:事件和结果。事件有许多结果,结果属于事件。我可以很好地保存,但是当我去编辑时,我只能自动获取表单中事件部分的信息 我构建的结果表单信息如下:CakePHP-一个页面上有两个模型,无法获取此->请求->数据自动控制字段填充,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我有两个控制器:事件和结果。事件有许多结果,结果属于事件。我可以很好地保存,但是当我去编辑时,我只能自动获取表单中事件部分的信息 我构建的结果表单信息如下: $option_number = 5; for ($i = 0; $i < $option_number; $i++) { echo $this->Form->select("Result.{$i}.object_id", $qual_options, array('empty' =&
$option_number = 5;
for ($i = 0; $i < $option_number; $i++) {
echo $this->Form->select("Result.{$i}.object_id", $qual_options, array('empty' => false, 'class' => 'result-name'));
echo $this->Form->hidden("Result.{$i}.id");
echo $this->Form->hidden("Result.{$i}.type", array('value' => 'qual'));
echo $this->Form->hidden("Result.{$i}.action", array('value' => 'add')); ?>
}
它工作得很好,但我不知道如何让它显示结果。我尝试过很多事情,最有可能的是:
$this->request->data['Result'] = $this->Result->findAllByEventId($id);
因此,我最终得到了如下数据结构:
[Result] => Array
(
[0] => Array
(
[Result] => Array
(
[id] => 1
[object_id] => 1
[type] => qual
[action] => add
[amt] => 10
[event_id] => 1
)
)
[1] => Array
(
[Result] => Array
(
[id] => 2
[object_id] => 2
[type] => qual
[action] => add
[amt] => 1
[event_id] => 1
)
)
... etc.
)
)
这看起来很可疑,我就是无法操纵它
更新我应该提到这一点;这就是我保存数据时的样子,我想模仿一下
[Result] => Array
(
[0] => Array
(
[object_id] => 1
[type] => qual
[action] => add
[amt] => 0
[event_id] => 3
)
[1] => Array
(
[object_id] => 1
[type] => qual
[action] => add
[amt] => 1
[event_id] => 3
)
您可以看到每个数字键后面都有信息;相反,我的数字键中也有一个数组名Result,我不知道如何正确地消除它!:}我总是可以循环并以CakePHP想要的格式构建它,但我想正确地完成它。上面这一行是需要改变的,但我已经没有主意了。用find'first'来对付这个事件怎么样?因为它有很多,所以它将在一个[Result]键和许多数字键中返回结果模型
$this->request->data = $this->Event->find('first', array(
'conditions' => array(
'Event.id' => $id
),
'contain' => array(
'Result'
)
));
这将返回如下结果:
array(
'Event' => array(
'id' => 1,
'name' => 'event name'
),
'Result' => array(
0 => array(
'id' => 1,
...
),
1 => array(
'id' => 2,
...
)
)
);
如果需要,您可以取消设置事件键。提示:将表单发布为空,并调试$this->request->data数组-按照它的外观,您需要创建数据,它将正常工作并自动填充。我也记不起来了,但有了这个技巧,你总能找到答案。嗨,马克,读了你的评论后,我意识到我应该发布这个结构。我这样做了,希望能让问题更清楚一点。所以你可以用一个foreach循环重新构造数组。对于这个软件的每个部分,我都必须这样做?这就是CakePHP建议我做的?我觉得很难相信。
array(
'Event' => array(
'id' => 1,
'name' => 'event name'
),
'Result' => array(
0 => array(
'id' => 1,
...
),
1 => array(
'id' => 2,
...
)
)
);