在Cake php中提交表单时未插入数据

时间:2013-11-11 04:49:01

标签: cakephp

我是蛋糕php的初学者...我创建了页面模型等等。但是当我点击添加页面表单上的发布按钮时,我的数据没有提交。我的代码是。我将非常感谢任何帮助。     这是我的控制器功能

   function add(){
     if(!empty($this->data)){
  if($this->Page->save($this->data)){
  $this->Session->setFlash('This Page was successfully added!');
                $this->redirect(array('action'=>'index'));
     } else {
 $this->Session->setFlash('This Page was not added, Please try again!');
    }
  }
}

这是我的Page.php

class Page extends AppModel {
  var $name ='Page';
var $validate = array (
    'title' => array(
        'title_must_not_be_blank'=>array(
                'rule'=> 'notEmpty',
                'message'=> 'This Page is missing A Title!'
            ),
        'title_must_no_be_unique'=>array(
                'rule'=> 'isUnique',
                'message'=> 'A Page with the Title exists!'
            )   
        ),
    'body'=>array(
    'body_must_not_be_blank'=>array(
            'rule'=> 'notEmpty',
            'message'=> 'This Page is missing A Body text!'     
        )   
    )
);
public function isOwnedBy($Page, $user) {
return $this->field('id', array('id' => $Page, 'id' => $user)) === $Page;

} }

这是View / Pages / add.ctp

 <div id="Page">  

添加新页面

<?php 
echo $this->form->create('Page', array('action'=>'add'));
echo $this->form->input('title');
echo $this->form->input('body');
echo $this->form->end('Publish');

&GT;

2 个答案:

答案 0 :(得分:1)

默认PagesController附带$uses = array()

只需设置$uses = array('Page')'即可。可能这是在这里造成问题。

以及 Guillemo Mansilla 表示应该如此 echo $this->Form->create()代替echo $this->form->create()

并且你的行动应该是

function add() {
    if (!empty($this->request->data)) {
        if ($this->Page->save($this->request->data)) {
            $this->Session->setFlash('This Page was successfully added!');
            $this->redirect(array('action' = > 'index'));
        } else {
            $this->Session->setFlash('This Page was not added, Please try again!');
        }
    }
}

<强>更新

以下路线会在此处产生问题。

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

因为您是通过/pages/add访问该页面的。因此,当您提交表单时,它会转到display操作,而不是add操作。

所以设置一个像Router::connect('/add-page', array('controller' => 'pages', 'action' => 'add'));这样的路线来正确处理事情。

希望这会对你有所帮助。

答案 1 :(得分:0)

尝试     echo $ this-&gt; Form-&gt; create()

而不是     echo $ this-&gt; form-&gt; create()

换句话说,请注意你的情况。