我的调试值设置为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。
如果$this->request->data包含一个以表单模型命名的数组元素,并且该数组包含模型主键的空值(这里是id),那么FormHelper将为该记录创建一个add表单。对于add方法,HTTP POST谓词是可以的。在CakePHP中,POST用于创建,PUT用于编辑。您可以检查验证并将请求类型更改为非get。
if (!$this->request->is('get')){
//Save logic here
}