2016-09-06 7 views
0

Yii2アプリケーションに「wbraganca Yii2 dynamic form」を統合しましたが、追加(+)ボタンをクリックすると新しいフィールドが追加されず、エラー:Yii2動的フォームは、追加ボタンをクリックすると新しいフィールドを追加しません

Uncaught ReferenceError: dynamicform_1b7f3e0d is not defined 

私は今までこの問題の解決策を見つけられませんので、重複としてマークしないでください。前もって感謝します。ここで

は私のウィジェットコードです:

<?php $form = ActiveForm::begin(['id' => 'dynamic-form']); ?> 
<div class="row"> 
    <div class="col-sm-6"> 
     <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> 
    </div> 
    <div class="col-sm-6"> 
     <?= $form->field($model, 'note')->textInput(['maxlength' => true]) ?> 
    </div> 
</div> 

<div class="panel panel-default"> 
    <div class="panel-heading"><h4><i class="glyphicon glyphicon-envelope"></i> Addresses</h4></div> 
    <div class="panel-body"> 
     <?php DynamicFormWidget::begin([ 
      'widgetContainer' => 'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_] 
      'widgetBody' => '.container-items', // required: css class selector 
      'widgetItem' => '.item', // required: css class 
      'limit' => 4, // the maximum times, an element can be cloned (default 999) 
      'min' => 1, // 0 or 1 (default 1) 
      'insertButton' => '.add-item', // css class 
      'deleteButton' => '.remove-item', // css class 
      'model' => $aps[0], 
      'formId' => 'dynamic-form', 
      'formFields' => [ 
       'product_id', 
       'pest_disease_id', 
      ], 
     ]); ?> 

     <div class="container-items"><!-- widgetContainer --> 
     <?php foreach ($aps as $i => $ap): ?> 
      <div class="item panel panel-default"><!-- widgetBody --> 
       <div class="panel-heading"> 
        <h3 class="panel-title pull-left">Address</h3> 
        <div class="pull-right"> 
         <button type="button" class="add-item btn btn-success btn-xs"><i class="glyphicon glyphicon-plus"></i></button> 
         <button type="button" class="remove-item btn btn-danger btn-xs"><i class="glyphicon glyphicon-minus"></i></button> 
        </div> 
        <div class="clearfix"></div> 
       </div> 
       <div class="panel-body"> 
        <?php 
         // necessary for update action. 
         if (! $ap->isNewRecord) { 
          echo Html::activeHiddenInput($ap, "[{$i}]id"); 
         } 
        ?> 

        <div class="row"> 
         <div class="col-sm-6"> 
          <?= $form->field($ap, "[{$i}]product_id")->textInput(['maxlength' => true]) ?> 
         </div> 
         <div class="col-sm-6"> 
          <?= $form->field($ap, "[{$i}]pest_disease_id")->textInput(['maxlength' => true]) ?> 
         </div> 
        </div><!-- .row --> 

       </div> 
      </div> 
     <?php endforeach; ?> 
     </div> 
     <?php DynamicFormWidget::end(); ?> 
    </div> 
</div> 

<div class="form-group"> 
    <?= Html::submitButton($ap->isNewRecord ? 'Create' : 'Update', ['class' => 'btn btn-primary']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

私はJSがPOS_HEAD位置にrendringされていない、DynamicFormWidgetクラスで問題を発見した私は、その後POS_READYにJavaScriptコード取得の位置を変更した場合

protected function registerOptions($view) 
{ 
    $encOptions = Json::encode($this->_options); 

    $this->_hashVar = DynamicFormWidget::HASH_VAR_BASE_NAME . hash('crc32', $encOptions); 
    $view->registerJs("var {$this->_hashVar} = {$encOptions};\n", $view::POS_HEAD); 
    //$view->registerJs("var {$this->_hashVar} = {$encOptions};\n", $view::POS_READY); 
} 

を保護削除されたボタンは機能しなくなります。

+0

をPOS_ENDするPOS_HEADからスクリプトの位置を変更する必要があなたの 'DynamicFormWidget'コードを入れてください – vishuB

+0

あなたのhtml頭の中でどのdynamicform_hashed価値はありますスクリプトタグのタグ? – yafater

+0

はいDynamicFormWidgetクラスのjavascriptタグで定義されているdynamicform_hashed値があります。まだ問題がある場合は –

答えて

1

あなたDynamicFormWidgetクラスでこのコードを交換してください:

protected function registerOptions($view) 
{ 
    $encOptions = Json::encode($this->_options); 

$this->_hashVar = DynamicFormWidget::HASH_VAR_BASE_NAME . hash('crc32', $encOptions); 
$view->registerJs("var {$this->_hashVar} = {$encOptions};\n", $view::POS_END); 
} 

をあなたは

関連する問題