我刚开始学习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']);
}
但我无法获得点击的按钮..
请告诉我怎样才能实现这个目标?
提前致谢
答案 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']);
}