通过Bootstrap模式渲染视图

时间:2013-10-29 06:52:38

标签: php jquery twitter-bootstrap yii

我需要使用bootstrap模式来加载表单,如何通过链接调用带参数的bootstrap模式?

查看:

<?php echo CHtml::link(Yii::t('app','addaction'),'#myModal',array('class'=>'btn btn-primary','data-toggle'=>'modal')) ;?>
<br/><br/><br/>

<!-- Bootstrap modal dialog -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title"><?php echo Yii::t('app','AddAction'); ?></h4>
            </div>
            <div class="modal-body">
                <?php echo $this->renderPartial('_form', array('model'=>$model,'productId'=>$productId));  // I need $productId to by dynamic related to link 
                ?>              
            </div>

        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

控制器:

public function actionCreate()
    {
    $model=new Actions;
    $productId=intval($_GET['productId']);

    // Uncomment the following line if AJAX validation is needed
    $this->performAjaxValidation($model);

    if(isset($_POST['Actions']))
    {
        $model->attributes=$_POST['Actions'];

        $model->product_id=$productId;
        if($model->validate()){
            $model->save(false);
            $message=Email::setJavaMessage('success',Yii::t('app','sm'),Yii::t('app','actionWasAdded'));
            echo CJSON::encode(array('status' => 'success','message'=>$message));
            Yii::app()->end();
        }else{
            $error = CActiveForm::validate($model);
            if($error!='[]')
                echo $error;
            Yii::app()->end();
        }
    }
    if(Yii::app()->request->getIsAjaxRequest())
        echo $this->renderPartial('_form',array('model'=>$model,'productId'=>$productId),false,true);//This will bring out the view along with its script.

    else
        $this->render('create',array(
                'model'=>$model,'productId'=>$productId));
}

所以用上面的代码表单也可以进行验证,如果我需要添加动态参数链接怎么办? 例如:通过更新功能在CRGidview中使用它,然后$ product_id将针对与数据库中的值相关的每一行进行更改。

1 个答案:

答案 0 :(得分:0)

我不知道你是否已经找到了解决方案,但我会这样做:

在您的链接中添加“data-productId”之类的参数(例如:CHtml::link('Addaction','#myModal',array('id'=>'link','data-toggle' => 'modal','data-productId'=>$id, 'class' => 'link')))。

将javascript函数绑定到链接上的click事件,如下所示:

$("a#link").click(function()
{
   var productId = $(this).data('productId');

   //you can change the value of a form component like this
   //in the below example I have a hidden input field whose val I want to change to be submitted with the form
   $("input#FormId_idHiddenInput").val(productId);

   $('#myModal').modal('show');
}); 

要使此示例正常工作,您必须将表单从部分文件移动到对话框文件。

如果这有助于您或您遇到其他问题,请告诉我。