我需要使用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">×</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将针对与数据库中的值相关的每一行进行更改。
答案 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');
});
要使此示例正常工作,您必须将表单从部分文件移动到对话框文件。
如果这有助于您或您遇到其他问题,请告诉我。