2017-09-18 12 views
0

モーダルフォームでビューを読み込もうとしていますaタグをクリックしてください。しかし、私の幸いなことに、モーダルフォームは空のままです。私はYii2 MVCフレームワークに取り組んでいます。私はそれを試している方法でそれを行うことは可能ですか、または私はろう者の通りに行くのですか?どのような私がこれまで書いたことは次のとおりです。 コントローラのアクション:にロードすると仮定しモーダルからのYii2ロードビューが正しく動作しない

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> 

私の見解、:モーダルフォームのボタンがあり、最初のビューの

public function actionInquiry(){ 
     $model = new Inquiry(); 
     $id = (int)$_GET['id']; 
     $product = Product::findOne($id); 

     return $this->render('inquiry', [ 
      'model' => $model, 
      'product' => $product 
     ]); 
    } 

パート、モーダルウィンドウ:

<?php 

use kartik\file\FileInput; 
use kartik\helpers\Html; 

?> 
<div id="inquiry-page"> 
    <div class="height50"></div> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-sm-4"> 
       <div class="col-sm-12"> 
        <h2 class="text-center"><span class="inquiry-heading"><?= Yii::t('app', 'app.Inquiry') ?></span></h2> 
       </div> 
       <div class="col-sm-12 height50"></div> 
       <div class="col-sm-12 text-right"> 
        <img src="<?= $product->getProductImg() ?>" alt="<?= $product->title ?>"> 
       </div> 
      </div> 
      <div class="col-sm-8 grey-bg right-part-inquiry"> 
       <div class="col-sm-12"> 
        <div class="x-mark"> 
         <a href=""><img src="<?= Yii::$app->urlManagerFrontend->baseUrl ?>/images/delete-icon.png" alt="delete"></a> 
        </div> 
       </div> 
       <div class="col-sm-12 height50"></div> 
       <?php $form = \kartik\form\ActiveForm::begin([ 
         'method' => 'post', 
         'fieldConfig' => [ 
         ] 
       ]) ?> 

       <div class="row"> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'product_name')->textInput(['value' => $product->title ]) ?> 
        </div> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'country')->textInput() ?> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'name')->textInput() ?> 
        </div> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'city')->textInput() ?> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'surname')->textInput() ?> 
        </div> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'email')->textInput() ?> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'company')->textInput() ?> 
        </div> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'vat_number')->textInput() ?> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-sm-6"> 
         <?= $form->field($model, 'phone')->textInput() ?> 
        </div> 
        <div class="col-sm-6"> 
         <div class="col-sm-6 padding0"> 
          <?php 
          echo $form->field($model, 'imageFiles[]')->widget(FileInput::classname(), [ 
           'options' => [ 
            'multiple' => false, 
            'disabled' => (Yii::$app->params['numberPubPhotos'] == 0) ? true : false, 
           ], 
           'pluginOptions' => [ 
            'allowedFileExtensions'=> Yii::$app->params['allowedProductFileExtensions'], 
            'maxFileCount' => Yii::$app->params['numberPubPhotos'], 
           ], 
          ]); 
          ?> 
         </div> 
         <div class="col-sm-6 padding0"></div> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-sm-12"> 
         <?= $form->field($model, 'message')->textarea(['rows' => 5]) ?> 
        </div> 
       </div> 

       <?php \kartik\form\ActiveForm::end() ?> 
      </div> 
     </div> 
    </div> 
</div> 

そして最後に、私のjs:

$(function() { 
     $('.modalButton').on('click', function() { 
      $.get($(this).attr('href'), function (data) { 
       $('#modal').modal('show').find('#modalContent').html(data); 
      });   
     }); 
    }); 
+0

[これは役立ちます](https://stackoverflow.com/questionsで

 return $this->render('inquiry', [ 'model' => $model, 'product' => $product ]); 

を置き換えます/ 36351792/how-to-open-view-page-in-popup-in-yii2) –

答えて

1

あなたは正しい道を選択したが、私はいくつかのチャゲがyii2基準に従って、あなたのコードをリファクタリングするために作るために、あなたをprorose:あなたそうアクションで、renderAjax()

1)ザ・はあなたの目的のために、コントローラでSOM具体的な方法ですコントローラは次のようになります

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>'; 

3)変更せずモーダル図。

4)そして、あなたのjsは次のようになります。

$(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); 
       } 
      }); 
     }); 
    }); 
+0

ajaxレスポンスから得られるものはHTML全体ですが、モーダルではロードされません。 –

+0

申し訳ありませんが、私はあなたを理解していませんが、これは疑問や問題ですか? – vityapro

+0

問題:)これは、私が応答から正しく得るべきものであることを意味します、そうですか?しかしモーダルビューではレンダリングできません。たぶん私はよくそれを説明することはできません:)それについて申し訳ありません:) –

0

ちょうど

 return $this->renderAjax('inquiry', [ 
      'model' => $model, 
      'product' => $product 
     ]); 
関連する問題