CakePHP saveAll 和验证
Posted
技术标签:
【中文标题】CakePHP saveAll 和验证【英文标题】:CakePHP saveAll and Validation 【发布时间】:2013-06-06 16:17:49 【问题描述】:粉丝,
我尝试在数据库中保存多个条目。
例子:
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');
项目.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);
当我尝试保存非电子邮件值时,我收到“保存错误”但输入字段没有消息。验证错误是:
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->数据
array(
(int) 0 => array(
'Item' => array(
'name' => 'test'
)
),
(int) 1 => array(
'Item' => array(
'name' => 'test2'
)
)
)
【问题讨论】:
通过调试显示 $this->request->data 中的内容 见上面的编辑@MoyedAnsari 【参考方案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']);
虽然,您现有的控制器代码应该也可以使用修改后的输入命名
未经测试(不在我的电脑后面),但值得一试:)
【讨论】:
以上是关于CakePHP saveAll 和验证的主要内容,如果未能解决你的问题,请参考以下文章