在添加管理员前缀/路由之前,一切正常......
目前,我有一个带有以下功能的QuestionsController.php文件:
public function admin_add() {
if ($this->request->is('post') ) {
$this->Question->create();
if ($this->Question->save($this->request->data)) {
$this->Session->setFlash('Your question has been saved.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to add your question.');
}
} else {
$this->Session->setFlash('Not post.');
}
}
以下是/views/Questions/admin_add.php的内容:
<h2>Add a question</h2>
<?php
echo $this->Form->create('Question');
echo $this->Form->input('nickname');
echo $this->Form->input('content');
echo $this->Form->input('option1');
echo $this->Form->input('option2');
echo $this->Form->input('option3');
echo $this->Form->end('Save question');
echo $this->Html->link('Cancel', array('controller' => 'questions', 'action' => 'index'));
注意控制器底部的setFlash(“不发布。”)?每次我点击“保存问题”按钮,我都会看到该消息?为什么呢?
更新
我们确定请求方法是get
,这解释了为什么它不起作用。但现在真正的问题是为什么是get
。在添加管理员前缀之前,我非常确定它是post
。
答案 0 :(得分:1)
如果它正在命中if块的后半部分,则请求不会发布。
要找出它是什么,只需在if块之前添加此代码:
debug(CakeRequest::method());
(假设您的调试级别为2,用于开发模式)
然后,一旦你知道发生了什么样的请求,请检查一下。
答案 1 :(得分:1)
<?php echo $this->Form->create('Question', array( 'type' => 'POST' ) ); ?>
试试:)
您还可以向该$options
数组添加其他选项,例如操作,编码,默认值,网址等。
<强>更新强>
根据您的评论,我认为您告诉我们GET是由控制器决定的。检查您的源代码中的FORM,看看type="post"
是否存在,或者是否显示type="get"
。
如果是发布,那么您将在帖子上重定向,类似于PRG模式。这是你失去它的地方。在POST表格后你最终会得到什么网址?