2017-08-13 8 views
0

Ich habe ein Feld, das ein Select2-Widget-Feld ist und es wird normalerweise in vielen Formen verwendet, aber das Kopieren des gleichen Codes nach einer Weile wird wirklich nervig. Daher habe ich mich vielleicht entschieden, ein Widget nur für dieses Feld zu erstellen.Yii2: Formularfelder über Widget wiederverwenden

Das Feld ist wie folgt

 <?= $form->field($model, 'contact_id')->widget(Select2::className(), [ 
     'initValueText' => empty($model->contact_id) ? '' : $model->contact->contact_id . ' ' . $model->contact->fullname, 
     'options' => [ 
      'class' => 'input-sm', 
      'id' => 'contact_id', 
      'placeholder' => '-- Search --', 
      'disabled' => $disabled, 
      'onchange' => new JsExpression("get_contact_info($(this).val())"), 
     ], 
     'pluginOptions' => [ 
      'allowClear' => true, 
      'language' => [ 
       'errorLoading' => new JsExpression("function() { return 'Waiting for results...'; }"), 
      ], 
      'ajax' => [ 
       'url' => $fetch_url, 
       'dataType' => 'json', 
       'data' => new JsExpression('function(params) { return {q:params.term}; }'), 
       'results' => new JsExpression('function(data,page) { return {results:data.results.text}; }'), 
      ], 
      'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 
      'templateResult' => new JsExpression('function(contact) { return contact.text; }'), 
      'templateSelection' => new JsExpression('function (contact) { return contact.text; }'), 
     ], 
    ]); ?> 

Dieses Feld nutzt Ajax Fetching und erlauben müssen erstellen und zu aktualisieren Formen verwendet werden.

Kann mir bitte jemand in die richtige Richtung zeigen.

+0

Das ist richtig, ein Widget erstellen und konfigurieren Sie es nach Bedarf. – SiZE

Antwort

0

Ich sehe zwei Lösung: a) erstellen widget - mehr Arbeit, aber flexible Verwendung von zusätzlichen Einstellungen b Hinzufügen) separate Ansicht erstellen und macht es - schneller, aber nicht so flexibel

Verwandte Themen