我是蛋糕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;
答案 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()换句话说,请注意你的情况。