cakephp 2应用程序cookbook编辑无法正常工作

时间:2014-12-27 16:19:24

标签: php cakephp

我正在遵循第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中它缺少

?>

想知道这是不是一个错字......

1 个答案:

答案 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'));
?>

就是这样。