根据Yii中的确认渲染动作

时间:2015-10-07 10:30:16

标签: php yii

我有一个问题。有没有办法根据确认消息呈现其他操作? 例如,我有这个:

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'), )); ?> 。如果用户单击“否”,则应该呈现要呈现的操作。 提前谢谢

2 个答案:

答案 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>

我也会尝试你的解决方案!再次感谢您的帮助!