Twitter bootstrap 从DONS';我不能正常工作
我正试图在Twitter bootstrap 从DONS';我不能正常工作,twitter-bootstrap,yii2,Twitter Bootstrap,Yii2,我正试图在a标记单击上以模态形式加载视图。但不幸的是,模态形式仍然是空的。我正在研究Yii2 MVC框架。有没有可能用我正在尝试的方式去做呢,或者我正在一条聋街上走呢?到目前为止,我写的是: 控制器操作: public function actionInquiry(){ $model = new Inquiry(); $id = (int)$_GET['id']; $product = Product::findOne($id);
a
标记单击上以模态形式加载视图。但不幸的是,模态形式仍然是空的。我正在研究Yii2 MVC框架。有没有可能用我正在尝试的方式去做呢,或者我正在一条聋街上走呢?到目前为止,我写的是:
控制器操作:
public function actionInquiry(){
$model = new Inquiry();
$id = (int)$_GET['id'];
$product = Product::findOne($id);
return $this->render('inquiry', [
'model' => $model,
'product' => $product
]);
}
第一个视图的一部分,其中模态窗体的按钮为:
echo '<div class="col-sm-4">
<div class="lineheight32">
<a class="btn-bg modalButton" href="/'.$lang->url.'/'.$inquiryPage->url.'?id='.$product->id.'">'.Yii::t('app', 'app.Make inquiry').'</a>
</div>';
\yii\bootstrap\Modal::begin([
'id' => 'modal',
'size' => 'modal-lg'
]);
echo '<div id="modalContent>"></div>';
\yii\bootstrap\Modal::end();
echo '<div>
您选择了正确的方法,但我建议您根据yii2标准重构代码: 1) 控制器中的是som特定方法,出于您的目的:
renderAjax()
,因此控制器中的操作将是:
public function actionInquiry(){
//set response is json
Yii::$app->response->format = Response::FORMAT_JSON;
$model = new Inquiry();
//use POST and default yii2 method for secure to get id
$id = Yii::$app->request->post('id');
$product = Product::findOne($id);
//use renderAjax for transfer to view your modal
return $this->renderAjax('inquiry', [
'model' => $model,
'product' => $product
]);
}
2) 第一个视图的一部分,其中模态窗体的按钮为:
echo '<div class="col-sm-4">';
echo '<div class="lineheight32">'
//Heare use yii\helpers\Html for best code style
//And data attribute from HTML5 for save data
echo Html::a(Yii::t('app', 'app.Make inquiry'), "javascript:void(0);",
[
'class' => "btn-bg modalButton",
"data-url" => "/$lang->url/$inquiryPage->url",
"data-product_id" => $product->id]);
echo '</div>';
\yii\bootstrap\Modal::begin(['id' => 'modal','size' => 'modal-lg']);
echo '<div id="modalContent>"></div>';
\yii\bootstrap\Modal::end();
echo '</div>';
替换
return $this->render('inquiry', [
'model' => $model,
'product' => $product
]);
与
我从ajax响应中得到的是整个html,但它没有加载到模式中。对不起,我不明白你的意思,这是问题或问题?问题:)我的意思是这是我应该从响应中得到的,对吗?但无法在模式视图中渲染它。也许我不能很好地解释,很抱歉:)据我所知,正确的答案是,作为回应,您将得到html和js,您可以使用.html()函数插入模态,有关更多信息,请参阅文档,方法renderAjax
echo '<div class="col-sm-4">';
echo '<div class="lineheight32">'
//Heare use yii\helpers\Html for best code style
//And data attribute from HTML5 for save data
echo Html::a(Yii::t('app', 'app.Make inquiry'), "javascript:void(0);",
[
'class' => "btn-bg modalButton",
"data-url" => "/$lang->url/$inquiryPage->url",
"data-product_id" => $product->id]);
echo '</div>';
\yii\bootstrap\Modal::begin(['id' => 'modal','size' => 'modal-lg']);
echo '<div id="modalContent>"></div>';
\yii\bootstrap\Modal::end();
echo '</div>';
$(function () {
$('.modalButton').on('click', function () {
$.ajax({
type: "POST",
url: $(this).data('url'),
data: {'id': $(this).data('product_id')},
success: function (data) {
$('#modal').modal('show').find('#modalContent').html(data);
}
});
});
});
return $this->render('inquiry', [
'model' => $model,
'product' => $product
]);
return $this->renderAjax('inquiry', [
'model' => $model,
'product' => $product
]);