2015-10-07 77 views
0

我有問題。有沒有一種方法可以根據確認消息提供其他操作? 例如,我有這樣的:基於Yii確認的渲染動作

<?php $this->widget('booster.widgets.TbButton', array(
     'buttonType'=>'submit', 
     'context'=>'primary', 
         'htmlOptions' => array(
         'id'=> 'createstudent', 
         'confirm' => 'Do you want to register the student to a class' 
        ), 
     'label'=>$model->isNewRecord ? Yii::t('default', 'Create') : Yii::t('default', 'Save'), 
    )); ?> 

而我想做的是當用戶點擊在確認對話框是的,我想渲染來自其他控制器的另一個動作。例如contract/studentcreate, array($model->studentid)。如果用戶點擊否,它應該呈現假設呈現的動作。 謝謝你提前

回答

0

是的,這是可能的。 您可以使用jQuery來完成它。你必須捕捉按鈕上的「點擊」事件,當它發生時,你要求「確認」。如果用戶在確認對話框中單擊「是」,則對某個控制器/操作執行href,如果用戶單擊「否」,則對其他控制器/操作執行其他href。換句話說:

<script> 
    $("#createstudent").click(function() { 
    if(confirm('Do you want to register the student to a class?')){ 
     location.href = "BASEURL/controllerOne/actionOne"; 
    } 
    else{ 
     location.href = "BASEURL/controllerTwo/actionTwo"; 
    } 
    }); 
</script> 

凡BASEURL是在你在開發它的網絡域名項目的基本URL(本地主機,如果您正在使用本地主機),controllerOne是你的情況下,請求控制器用戶點擊「是」,並且actionOne是當用戶點擊「是」時調用的控制器「controllerOne」的動作。對於控制者二者和行動二者同樣。

編輯: 您正在使用一個提交按鈕。它有自己的href動作(表單的動作)。因此,您可能需要使用「a」鏈接創建自己的按鈕。例如:

<a id="createstudent" style="margin-left: 8px; margin-top:-10px; padding: 5px; background-color: #EA7A00; color: white; width: 62px; height: 25px; border: 1px solid #4B1800;cursor: pointer;">Example</a> 

一旦你點擊它,它根據你選擇的選項(是或否)href你正確的行動。

當然,您將不得不根據需要編輯CSS樣式。

+0

彈出信息發生,但不管我點擊了什麼。它調用默認操作。它忽略了location.href命令 – thr

+0

也許是因爲你正在使用提交按鈕。它當然有它自己的href動作(這將是表單的動作)。 這意味着您需要創建自己的按鈕作爲「a」鏈接。例如,替換TbButton小部件: Example 一旦你點擊它,它href你到正確的行動。 當然,您將不得不根據自己的願望編輯CSS樣式。 – Mundo

0

謝謝答案世界。我認爲我通過這樣做解決了這個問題:

<script> 
$("#createstudent").click(function(e){ 
    e.preventDefault(); 

bootbox.confirm("<?php echo Yii::t('default', 'Do you want to register this student?');?>", function(result) { 
    if(result){ 
     $('#student-form').submit(); 
     window.location = 'http://localhost/myproject/index.php/contract/studentcreate/'+'<?php echo $maxid ?>'; 

    } else { 
    console.log("Confirmed: "+result); 
     $('#student-form').submit(); 
    } 

}); 
}); 
</script> 

我也會試試你的解決方案!再次感謝您的幫助!

+0

請小心使用此解決方案。如果有人在點擊註冊按鈕之前加載頁面,您可能會導致競爭狀況。最好讓你的'studentcreate'函數得到一個新的'$ maxid',而不是讓jquery在頁面上有值。 – vortextangent