CakePHP将表单提交给正确的操作

时间:2011-03-12 21:03:31

标签: php cakephp

我在add.ctp中有这个:

<!-- 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如何知道当用户点击提交时,将“数据”发送到控制器中的“添加”功能?

4 个答案:

答案 0 :(得分:9)

默认情况下,CakePHP会将表单发送到显示它的相同操作。

您可以在视图中更改它,如下所示:

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:0)

根据下面更新的语法,(CakePHP 2.4.x)

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

答案 3 :(得分:0)

对于cakephp 3.x

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

请参阅doc