加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

表单 – CakePHP 2.0确定哪个提交按钮已被点击

发布时间:2020-12-14 19:31:41 所属栏目:资源 来源:网络整理
导读:在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'][
在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->数据中应该有一个“提交”键

我在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->数据?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读