我用表格数据翻译了表格:
因此,此表包含记录,代表自定义翻译文本。
现在我想构建一个表单来编辑一个页面/表单中的所有行。
这是控制代码:
public function translate() {
$this->loadModel('Translate');
$data = $this->Translate->find('all');
$this->set('data', $data);
pr ($this->request->data);
if ($this->request->is('post','put')) {
if ($this->Translate->save($this->request->data)) {
$this->Session->setFlash('Recipe Saved!');
return $this->redirect($this->referer());
}
}
}
并且查看 - 请注意,我已经使用循环创建输入,不确定cakephp是否有更好的方法来执行此操作。
<?php echo $this->Form->create('Translate'); ?>
<?php
foreach ($data as $d) {
echo $this->Form->input('text', array('label' => 'Link strony', 'type' => 'text','value'=>$d['Translate']['text']));
echo $this->Form->input('id', array('type' => 'hidden', 'value' => $d['Translate']['id']));
}
?>
<?php echo $this->Form->end(array('class' => 'btn btn-success floatRight', 'label' => 'Zapisz')); ?>
目前,这段代码有效,但并不像我预期的那样。 $this->request->data
仅显示最后一个输入,忽略其他输入。附上,您会看到$ this-&gt; request-&gt;数据的调试。仅编辑最后一项。我想要的就是能够编辑所选输入并保存。谢谢你的帮助。
答案 0 :(得分:3)
看起来您要在单个表单中保存多行。在这种情况下, 你需要改变一下你的方法。
- 在表单助手中使用正确的索引。
- 使用 saveAll()代替save()来保存多个数据。
醇>
对视图文件的更改:
<?php
foreach ($data as $k => $d) {
echo $this->Form->input('Translate.'.$k.'.text', array(
'label' => 'Link strony',
'type' => 'text',
'value' =>$d['Translate']['text']
));
echo $this->Form->input('Translate.'.$k.'.id', array(
'type' => 'hidden',
'value' => $d['Translate']['id']
));
}
?>
然后,在你的控制器中:
if ($this->request->is('post','put')) {
$this->Translate->saveAll($this->request->data['Translate']);
/* Other code */
}
答案 1 :(得分:0)
尝试将名称指定为数组(translate []):
echo $this->Form->input('text', array('label' => 'Link strony', 'type' => 'text','value'=>$d['Translate']['text'],'name'=>'translate[]'));