2013-04-10 115 views
1

之前添加管理员前缀/路由,一切工作正常...CakePHP的:“添加”操作不会以管理员前缀工作

目前,我有一个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( “不发布”。)在控制器的底部?每次点击“保存问题”按钮,我都会看到该消息?为什么?

UPDATE 我们已经确定请求方法是get,这说明了它不起作用的原因。但现在真正的问题是为什么get。在添加管理员前缀之前,我确定它是post

+0

临时,你可以检查'如果(空($这个 - >请求 - >数据)!){' - 尽管这不回答你的问题,为什么。 – Dave 2013-04-10 23:53:51

+0

是你的表单方法POST吗? – 2013-04-10 23:58:20

+0

@Dave好主意! '$ this-> request-> data'实际上是空的。任何想法为什么? – emersonthis 2013-04-10 23:58:32

回答

1
​​

试一下:)

您还可以添加其他选项到$options阵列,如动作,编码,默认值,URL等

UPDATE

从你的意见,我想你告诉我们GET是由控制器决定的。检查你的源代码的形式看是否type="post"是存在的,或者如果它说:type="get"

如果发布,那么你将被重定向上的帖子,类似于PRG模式。这是你失去它的地方。 POST'ing您的表单后,您最终会输入哪个网址?

+0

我试过了,请求是*仍然* GET。不知道为什么。 – emersonthis 2013-04-11 00:07:25

+0

还在帖子?还是得到? – 2013-04-11 00:08:37

+0

对不起,错字。仍然GET – emersonthis 2013-04-11 00:09:37

1

如果它击中,如果块的下半年,该请求不发布。

要了解它是什么,仅仅只是如果块之前添加以下代码:

debug(CakeRequest::method()); 

(假设你的调试级别为2的开发模式)

然后,一旦你知道什么样的的请求正在发生,检查对此。

+0

这是'GET'!奇怪的!!你有什么想法,为什么会这样? – emersonthis 2013-04-11 00:01:57