我有一个问题。有没有办法根据确认消息呈现其他操作? 例如,我有这个:
handler.disposed
我想要做的是当用户在确认对话框中点击“是”时,我想从另一个控制器渲染另一个动作。例如 <?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'),
)); ?>
。如果用户单击“否”,则应该呈现要呈现的操作。
提前谢谢
答案 0 :(得分:0)
是的,这是可能的。 您可以使用jQuery来完成它。你必须在按钮上捕获“点击”事件,当它发生时,你要求“确认”。如果用户在确认对话框中单击“是”,则对某个控制器/操作执行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是您正在开发它的Web域中项目的基本URL(如果您正在使用localhost,则为localhost),controllerOne是您在用户单击“是”时请求的控制器,以及actionOne是当用户单击“是”时调用的控制器“controllerOne”的操作。对于controllerTwo和actionTwo也是如此。
编辑: 您正在使用提交按钮。它有自己的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>
点击它后,它会根据您选择的选项(是或否)将您反映到正确的操作。
当然,您必须根据需要编辑CSS样式。
答案 1 :(得分:0)
Thanx答案Mundo。我想我已经解决了这个问题:
<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>
我也会尝试你的解决方案!再次感谢您的帮助!