//查看代码
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逻辑记录。 如果还有另外一个逻辑......还是建议吗?
答案 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
}
或者,您还可以使用两个不同的提交操作创建两个表单,每个按钮一个。但它会是一样的。