风扇,
我尝试在数据库中保存多个条目。
示例:
index.ctp
echo $this->Form->create('Item');
echo $this->Form->input('0.Item.name');
echo $this->Form->input('1.Item.name');
echo $this->Form->end('save');
Item.php
class Item extends AppModel {
var $validate = array(
'name' => 'email'
);
}
ItemsController.php
public function index() {
if($this->request->is('post')){
if($this->Item->saveAll($this->request->data))
$this->Session->setFlash("saved successful");
else{
$this->Session->setFlash("saving error");
debug($this->Item->validationErrors);
}
}
}
当我尝试保存非电子邮件值时,我收到“保存错误”,但没有输入字段的消息。 validationErrors是:
array(
(int) 0 => array(
'name' => array(
(int) 0 => 'This field cannot be left blank'
)
),
(int) 1 => array(
'name' => array(
(int) 0 => 'This field cannot be left blank'
)
)
)
任何人都可以帮助我?
编辑:
调试$ this-> request-> data
array(
(int) 0 => array(
'Item' => array(
'name' => 'test'
)
),
(int) 1 => array(
'Item' => array(
'name' => 'test2'
)
)
)
答案 0 :(得分:1)
您可以尝试重新格式化发布的数据并使用Model::saveMany()
代替documentation和Field naming Conventions);
echo $this->Form->create('Item');
echo $this->Form->input('Item.0.name');
echo $this->Form->input('Item.1.name');
echo $this->Form->end('save');
并且,在控制器内部;
$this->Item->saveMany($this->request->data['Item']);
尽管如此,您现有的控制器代码应该可以使用修改后的输入命名
未经测试(不在我的电脑后面),但值得一试:)