[英]Two submit buttons, one form (Yii)
我的表单中有两个CHtml :: submitButton(),分别是“ Accept”和“ Reject”。 每个按钮都有一个特定的ID ...当按下两个按钮中的任何一个时,我想在控制器中触发一个动作。 以下是代码片段。
================================================== =======
视图
<?php
echo CHtml::beginForm('mycontrollerName/AcceptUserRegistration','get');
?>
<?php echo CHtml::submitButton('Accept', array('id' => 'accept')); ?>
<? echo ' '; ?>
<?php echo CHtml::submitButton('Reject', array('id' => 'reject')); ?>
<?php echo CHtml::endForm(); ?>
================================================== ======
控制者
public function actionAcceptUserRegistration() {
$value = $_GET['id'];
if($value == "accept"){
//will do something here
}
if($value == "reject"){
//will do something here.
}
}
================================================== ====================
当我以这种方式实现它。 控制器端的获取值为空。 我做错了什么? 还是有其他解决方法?
您忘了给Submit按钮起个名字了(除非您的框架做了一些我们不知道的魔术-您应该真正发布生成的HTML代码!)。
如果这样做, $_GET['buttonname']
中的值将是它的值 (而不是其id),即Accept
或Reject
。 一旦进入i18n,这将变得非常混乱,因此您可能想为按钮使用不同的名称 ,然后检查isset($_GET['buttonname1'])
和isset($_GET['buttonname2'])
这是您要实现的代码示例:
视图:
<?php
echo CHtml::beginForm('mycontrollerName/AcceptUserRegistration','get');
?>
<?php echo CHtml::submitButton('Accept', array('id' => 'accept', 'name' => 'accept')); ?>
<? echo ' '; ?>
<?php echo CHtml::submitButton('Reject', array('id' => 'reject', 'name' => 'reject')); ?>
<?php echo CHtml::endForm(); ?>
注意:我添加了名称参数。 由于名称不会显示给用户,因此可以使用accept代替Accept。
控制器:
public function actionAcceptUserRegistration() {
if(isset($_GET['accept'])) {
//accepted
} else if(isset($_GET['reject'])) {
//rejected
}
//I recommend using POST method instead of GET for posting the form.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.