Sha*_*ell 2 php form-submit zend-form
我有一个Zend Framework表单,有两个提交按钮
$changes = new Zend_Form_Element_Submit('save_changes');
$changes->setLabel('Save Changes');
$delete = new Zend_Form_Element_Submit('delete');
$delete->setLabel('Delete');
Run Code Online (Sandbox Code Playgroud)
这样呈现HTML如下:
<input type="submit" name="save_changes" id="user_save_changes" value="Save Changes" >
<input type="submit" name="delete" id="user_delete" value="Delete" >
Run Code Online (Sandbox Code Playgroud)
在控制器中,如何确定用户按下哪个按钮?
在你的情况下,你应该只能检查
if(isset($_POST['save_changes'])
// or
if(isset($_POST['delete'])
Run Code Online (Sandbox Code Playgroud)
由于只提交了点击按钮的值.
通常,您为两个按钮指定相同的名称(例如操作),然后将值设置为您要执行的操作.不幸的是,这与IE无法很好地协作.有关多个提交按钮的不同解决方案的详细信息,请查看此页面.
既然你正在使用Zend,我会推荐更多Zend-ish方法.
你可以直接通过他们的名字调用元素,Zend有一个方法用于调用表单按钮(按钮,重置,提交)isChecked().
在你的代码中它将是:
if ($form->save_changes->isChecked()) {
// Saving ...
else if ($form->delete->isChecked()) {
// Removing ...
Run Code Online (Sandbox Code Playgroud)
实际上你可以通过以下方式得到这个:
if($this->getRequest()->getPost('save_changes'){
//Code here
}
if($this->getRequest()->getPost('delete'){
//Code here
}
Run Code Online (Sandbox Code Playgroud)
我之所以创建两个 if 条件,是因为您无法执行 if else 操作,因为即使您没有单击任何提交按钮,您也会加载该页面,另一个条件也会被执行。
例子:
if($this->getRequest()->getPost('save_changes'){
//once you load this will become true because you didn't click this
}else{
//once you load this page this will become true because you didn't click the save_changes submit button
}
Run Code Online (Sandbox Code Playgroud)
真实的故事。