如何在表单cakephp3中处理多个提交按钮

时间:2017-09-07 16:56:28

标签: cakephp-3.0 form-submit

我刚开始学习cakephp3,所以请原谅我的错误。

所以我有一个表单,我收集数据,我想有两个提交按钮。一个提交按钮将返回索引页面,另一个提交按钮将重定向我进行其他操作。

但是如何知道在控制器中点击了哪个提交按钮?

这是我的代码

<?= $this->Form->create($User) ?>
    <fieldset>
        <legend><?= __('Add User') ?></legend>
        <?php
            echo $this->Form->control('first_name');
            echo $this->Form->control('last_name');
            echo $this->Form->control('status');
        ?>
    </fieldset>
    <?= $this->Form->submit(__('Save & Exit', array('name'=>'btn1'))) ?>
    <?= $this->Form->submit(__('Save & Add Educational Details', array('name'=>'btn2'))) ?>
                <?= $this->Form->end() ?>

在我的控制器中我写了这个

if(isset($this->request->data['btn1'])) {
                    return $this->redirect(['action' => 'index']);
} else  if(isset($this->request->data['btn2'])) {
            return $this->redirect(['controller' => 'educationQualifications', 'action' => 'add']);
} 

但我无法获得点击的按钮..

请告诉我怎样才能实现这个目标?

提前致谢

1 个答案:

答案 0 :(得分:0)

你所做的是对的,但是一个小错误,你必须在如果条件中使用 isset() 如果隐式不检查对于 isset()。检查下面的更正

if(isset($this->request->data['btn1'])) {
                    return $this->redirect(['action' => 'index']);
} else  if(isset($this->request->data['btn2'])) {
            return $this->redirect(['controller' => 'educationQualifications', 'action' => 'add']);
} 

或者您可以试试这个,您必须为按钮指定相同的名称。

In your view
<?= $this->Form->submit(('Save & Exit'), array('name'=>'btn')) ?>
<?= $this->Form->submit(('Save & Add Educational Details'), array('name'=>'btn')) ?>

In your controller
if($this->request->data['btn']=='Save & Exit') {
                    return $this->redirect(['action' => 'index']);
} else  if($this->request->data['btn']=='Save & Add Educational Details')) {
            return $this->redirect(['controller' => 'educationQualifications', 'action' => 'add']);
}