0

我是cake 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;

} }

这是视图/页面/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');

?>

4

2 回答 2

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'));以正常工作。

希望这对您有所帮助。

于 2013-11-11T05:59:35.833 回答
0

试试 echo $this->Form->create()

而不是 echo $this->form->create()

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

于 2013-11-11T05:05:33.073 回答