2011-03-12 41 views
6

我有這樣的add.ctp:CakePHP的提交表單,以正確的行動

<!-- File: /app/views/posts/add.ctp --> 

<h1>Add Post</h1> 
<?php 
echo $form->create('Post'); 
echo $form->input('title'); 
echo $form->input('body', array('rows' => '3')); 
echo $form->end('Save Post'); 
?> 

,這在我的控制器:

function add(){ 
    if (!empty($this->data)) { 
     if($this->Post->save($this->data)){ 
      $this->Session->setFlash('Your post has been saved'); 
      $this->redirect(array('action' => 'index')); 
     } 
    } 
} 

我的問題是如何的CakePHP知道,當用戶點擊提交,將「數據」發送到控制器中的「添加」功能?

+0

你爲什麼不能讓我的PHP代碼?我有PHP忽略。 – stefan 2011-03-12 21:06:47

+0

我還沒有禁止任何東西:) – benhowdle89 2011-03-12 21:09:17

+0

奇怪,我再次加入;) – stefan 2011-03-12 21:11:22

回答

8

默認情況下,CakePHP會將表單發送到顯示它的相同操作。

您可以在視圖如下更改:

echo $form->create('Post', array('action' => 'whatever')); 
+1

它在2.x和3.x中顯示Deprecated warning – 2016-11-21 09:34:48

+1

這個警告是針對最新的蛋糕,用url替換動作。按照@dav的答案 – 2017-02-25 18:11:00

8

,或者如果你想重定向到另一個控制器也可以使用此

echo $form->create('Post', array('url' => '/controller_name/action_name'));

0

按照更新的語法以下將工作(CakePHP 2.4.x)

echo $this->Form->create('RegistrationsInout', array('action' => 'startroom')); 
0

對於CakePHP的3.x的

$this->Form->create('Post', ['url' => ['action' => 'post']]); 

doc