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
        ]);