在Cake
PHP 1.3中,您可以创建一个包含多个提交按钮的表单:
echo $this->Form->submit('Submit 1',array('name'=>'submit'); echo $this->Form->submit('Submit 2',array('name'=>'submit');
并检测控制器中的哪个提交按钮被按下:
if (isset($this->params['form']['submit']) && $this->params['form']['submit'] == "Submit 1") { // first button clicked }
在CakePHP中,$this-> params [‘form’]未设置,并且点击的按钮值不会显示在$this->请求中的任何位置,$this-> request->数据,$this- > params,$this-> data或$_POST.
如何确定在CakePHP 2.0中点击了哪个按钮?
提前致谢.
编辑:
根据要求,以下是窗体的代码:
<?PHP echo $this->Form->create('History',array('action'=>'add')); ?> <div class='submit'> <?PHP echo $this->Form->submit('Yes',array('div'=>false,'name'=>'submit')); echo $this->Form->submit('No','name'=>'submit')); ?> </div> <?PHP echo $this->Form->end()?>
并输出形式:
<form action="/projects/kings_recruit/trunk/www/histories/add" id="HistoryAddForm" method="post" accept-charset="utf-8"> <div style="display:none;"> <input name="_method" value="POST" type="hidden"> </div> <div class="submit"> <input name="submit" value="Yes" type="submit"> <input name="submit" value="No" type="submit"> </div> </form>
解决方法
通常,对于两个提交按钮使用相同的名称是不好的做法.
在$_POST和$this-> request->数据中应该有一个“提交”键
在$_POST和$this-> request->数据中应该有一个“提交”键
我在CakePHP 2.1.1中进行了测试,如下所示:
视图代码:
<?PHP echo $this->Form->create('Message',array('action'=>'test')); // Extra test input field echo $this->Form->input('test'); ?> <div class='submit'> <?PHP echo $this->Form->submit('Yes','name'=>'submit')); ?> </div> <?PHP echo $this->Form->end()?>
在$this-> request->数据中的控制器中:
array( 'submit' => 'Yes','Message' => array( 'test' => 'TestFieldTest' ) )
而在$_POST:
array( '_method' => 'POST','data' => array( 'Message' => array( 'test' => 'TestFieldTest' ) ),'submit' => 'Yes' )
你也可以给两个不同的名字提交:
echo $this->Form->submit('Yes','name'=>'submitY')); echo $this->Form->submit('No','name'=>'submitN'));
这样,您可以在$_POST或$this-> request->数据中区分它们,因为这些键将是提交的名称:
array( 'submitY' => 'Yes','Message' => array( 'test' => 'foo' ) ) array( '_method' => 'POST','data' => array( 'Message' => array( 'test' => 'Bar' ) ),'submitY' => 'Yes' )
然后确定按下哪个按钮,您可以使用简单的isset($_ POST [”])或$this-> request->数据?