如何检查cake php中的多个提交按钮条件
//视图代码如何检查cake php中的多个提交按钮条件,php,html,cakephp-2.0,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', '
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();
}
}
//它不工作!!!
我还有7个以上的提交按钮。还有最后一个按钮,用于处理数据库中的保存逻辑记录。
如果有其他逻辑,也建议?您的表单正在提交两个同名变量。(任务)如果不介意按哪个按钮,则始终提交表单标签(
和
)之间包含的所有输入
因此,您正在覆盖其中一个
我建议您根据单击的按钮在控制器中调用两个不同的操作
为此,您可以使用表单帮助器的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
}
或者,您也可以创建两个表单,其中包含两个不同的提交操作,每个按钮一个。但情况也一样。您的HTML表单中可能存在“名称冲突”。。。尝试将提交的名称重命名为其值,并以这种方式进行检查。。。另外,在执行此操作之前,请执行:die(''.print\r($this->params,true)。''代码>并检查服务器的输出。在CakePhp 2中,您应该调试'request'对象,使用以下命令:debug($this->request);返回代码>在操作开始时(在控制器中),这样至少可以看到表单发送的内容。请确保在app/Config/core.php
中将debug设置为1或2,否则调试消息也将不可见,您是否应该在此处使用按钮进行导航,特别是因为如果单击“下一步”按钮,您将不会处理表单数据。在我看来,如果它的功能是“保存并转到下一页”,那就好了,但如果它只是导航,则是常规的