两个提交按钮,一个表格(Yii)

时间:2012-04-20 07:11:01

标签: php forms button yii

我的表单中有两个CHtml :: submitButton(),即“Accept”和“Reject”。每个按钮都有一个特定的ID ...当按下任何两个按钮时,我想在我的控制器中触发一个动作。以下是代码段。

=============================================== ==========

查看

<?php
echo CHtml::beginForm('mycontrollerName/AcceptUserRegistration','get');
?>

<?php echo CHtml::submitButton('Accept', array('id' => 'accept')); ?>
<? echo '&nbsp;&nbsp;&nbsp;'; ?>
<?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.
}

}

=============================================== =======================

当我以这种方式实现它时。控制器端的get值为空。我做错了什么?或者还有其他方法吗?

2 个答案:

答案 0 :(得分:4)

你忘了给提交按钮一个名字(除非你的框架做了一些我们无法知道的魔法 - 你应该发布生成的HTML代码!)。

如果您这样做,$_GET['buttonname']中的值将是(不是其ID),即AcceptReject。一旦进入i18n,这就变得非常混乱,因此您可能希望为按钮使用不同的名称,然后选中isset($_GET['buttonname1'])isset($_GET['buttonname2'])

答案 1 :(得分:3)

以下是您尝试实现的代码示例:

查看:

<?php
echo CHtml::beginForm('mycontrollerName/AcceptUserRegistration','get');
?>

<?php echo CHtml::submitButton('Accept', array('id' => 'accept', 'name' => 'accept')); ?>
<? echo '&nbsp;&nbsp;&nbsp;'; ?>
<?php echo CHtml::submitButton('Reject', array('id' => 'reject', 'name' => 'reject')); ?> 
<?php echo CHtml::endForm(); ?>

注意:我添加了name参数。由于名称未显示给用户,因此您可以使用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.
}