如何检查蛋糕php中的多个提交按钮条件

时间:2013-03-02 07:06:26

标签: php html cakephp-2.0

//查看代码

echo $form->Create('Survey'); 

echo $form->submit( 'prev.arrow.png', array( 'name' => 'task', 'value' => 'next', 'div' => false ) ); 

echo $form->submit( 'next.arrow.png', array( 'name' => 'task', 'value' => 'prev', 'div' => false ) ); 

echo $form->end();

//控制器代码

if( isset( $this->params['form']['task'] ) ) {

    if( $this->params['form']['task'] == 'prev' ) {

        $this->Redirect( $prev_page ); 

        exit(); 

    } else if ( $this->params['form']['task'] == 'next' ) {

        $this->Redirect( $next_page ); exit(); 

    }

}

// IT不起作用!!!  而且我有超过7个提交按钮。和一个最终按钮,用于处理数据库中的SAVE逻辑记录。  如果还有另外一个逻辑......还是建议吗?

1 个答案:

答案 0 :(得分:0)

您的表单正在提交2个具有相同名称的变量。 (任务)如果不介意您按哪个按钮,则始终提交表单标签之间包含的所有inputs<form></form>) 因此,你要覆盖其中一个。

我建议你根据点击的按钮在控制器中调用两个不同的动作。

为此,您可以使用Form帮助程序的postLink操作创建两个按钮,而不是使用两个按钮创建表单。

类似的东西:

//calling the `prev` action for the current controller
echo $this->Form->postLink("Prev", array('action'=> 'prev'), array( 'class' => 'button'));

//calling the `next` action for the current controller
echo $this->Form->postLink("Next", array('action'=> 'next'), array( 'class' => 'button'));

然后在你的控制器中:

public function prev(){
   .... //whatever
}

public function next(){
   ... //whatever
}

或者,您还可以使用两个不同的提交操作创建两个表单,每个按钮一个。但它会是一样的。