簡體   English   中英

兩個提交按鈕,一種表單(Yii)

[英]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 '&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.
}

}

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

當我以這種方式實現它。 控制器端的獲取值為空。 我做錯了什么? 還是有其他解決方法?

您忘了給Submit按鈕起個名字了(除非您的框架做了一些我們不知道的魔術-您應該真正發布生成的HTML代碼!)。

如果這樣做, $_GET['buttonname']中的將是它的 (而不是其id),即AcceptReject 一旦進入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 '&nbsp;&nbsp;&nbsp;'; ?>
<?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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM