我正在遵循第1章第19页中的cakephp 2应用程序菜谱 或者在这里: http://www.cakedc.com/cakephp-tutorials/adding-and-editing-records
我已经检查了几次代码,但找不到阻止我更新记录的错误
如果我烘焙产品数据库,我可以完成所有的crud操作 我的添加工作正常,因此表单元素应该正常工作
在我的ProductsController编辑功能中,由于某种原因没有发布帖子
if($this->Product->save($this->request->data)){
$this->Session->setFlash(__('Product updated'));
return $this->redirect(array('action' => 'index'));
}
/ cakephp / app / Controller
中的ProductsController.php<?php
App::uses('AppController', 'Controller');
class ProductsController extends AppController {
public $helpers = array('Html', 'Form');
public $components = array('Session', 'Paginator');
Public $paginate = array('limit' => 10);
public function index() {
$this->Product->recursive = -1;
$this->set('products', $this->paginate());
}
public function view($id) {
if (!($product = $this->Product->findById($id))) {
throw new NotFoundException(__('Product not found'));
}
$this->set(compact ('product'));
}
public function add() {
if($this->request->is('post')){
$this->Product->create();
if($this->Product->save($this->request->data)){
$this->Session->setFlash(__('New product created'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Could not create product'));
}
}
public function edit($id){
$product = $this->Product->findById($id);
if(!$product){
throw new NotFoundException(__('Product not found'));
}
if ($this->request->is('post')){
$this->Product->id = $id;
if($this->Product->save($this->request->data)){
$this->Session->setFlash(__('Product updated'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Product could not be updated'));
}else{
$this->request->data = $product;
}
}
}
edit.ctp文件
<?php echo $this->element('Products/form'); ?>
他们在书中说,add.ctp和edit.ctp之间的标题看起来应该有所不同,但对于我的生活,我看不出差异。
同样在form.ctp中它缺少
?>
想知道这是不是一个错字......
答案 0 :(得分:1)
您的表单应该是这样的
<?php
echo $this->Form->create('Product',array('action' => 'edit'));
echo $this->Form->input('id', array('type'=>'hidden'));
echo $this->Form->inputs();
echo $this->Form->end(__('Submit'));
?>
就是这样。