我的调试值设置为2
,我认为因为没有数据传递到这里我得到验证错误,这就是为什么这首次出现是一个幻像错误。我不确定,因为我还是Cakephp的新手。
我有一个Addresses
控制器,它将数据传递给我的模型,如下所示:
public function add() {
if ($this->request->is('post')) {
$this->Address->create();
if ($this->Address->save($this->request->data)) {
$this->Session->setFlash(__('The address has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The address could not be saved. Please, try again.'));
}
}
$users = $this->Address->User->find('list');
$this->set(compact('users'));
}
但是当我使用die(debug($this->request->data))))
调试时,我得到以下结果,显示我的id
字段中没有传递任何内容:
/app/Controller/AddressesController.php (line 61)
array(
'Address' => array(
'id' => '',
'building_number' => '1',
'street_name' => 'Test Street',
'city' => 'Cityville',
'post_code' => 'N113AQ',
'user_id' => '1'
)
)
关于为什么没有任何内容传递到id
字段的任何想法?我让控制器以完全正确的完全的方式工作,对于完全没问题的不同表格。
我的数据库中的Address.id
字段设置为自动增量并且命名正确,$this->Address->save()
也返回false。
答案 0 :(得分:-1)
如果$ this-> request->数据包含以表单模型命名的数组元素,并且该数组包含模型主键的空值(此处为id),则FormHelper将创建一个添加表单为那个记录。对于add方法,HTTP POST动词是可以的。 POST用于创建,PUT用于CakePHP中的编辑。您可以检查验证并将请求类型更改为非GET。它可能有用。
if (!$this->request->is('get')){
//Save logic here
}