2016-07-18 12 views
1

Ich schreibe ein Widget, das Felder zu einem Formular Dinamycally mit Pjax hinzufügt. Ich bestelle die Validierungsregeln mit YiiActiveForm js hinzuzufügen, ich die Regeln im laufenden Betrieb bauen, durch Regeln von Form Attribute bekommen und Zuweisen sie mit:Yii2 Pjax und AssetBundle

$('#w1').yiiActiveForm('add', attributeRules); 

und sie in eine Datei in meinem Widget assets/js befindet speichern /rules.js, auf meiner run-Methode:

public function run() { 

     Pjax::begin($this->pjaxOptions); 

     $fields = $this->_listFields(); 

     $this->_setFormRules(); 

     $view = $this->getView(); 
     FofAsset::register($view); 

     echo $fields; 

     Pjax::end(); 

    } 

Das Problem ist, dass es immer die erste Version von rules.js zeigt (für erstes Feld), wenn ein zweites Feld hinzufügen, rules.js enthält nur die Regeln für das erste Feld (das der Seite hinzugefügte). Obwohl die Datei in widget/assets/js die Regeln für beide Felder enthält. Ich verwende forceCopy und appendTimestamp bereits auf meinem AssetBundle.

Das Problem ist, dass die Datei rules.js nach dem Aufruf von Pjax nicht aktualisiert wird.

Irgendwelche Ideen?

Antwort

1

Ich habe die Antwort gefunden.

Pjax nicht gleiche Ressource mehr als einmal laden bauen, deshalb meine Änderungen funktionierten nicht :)

Jeden Tag wir etwas Neues lernen.

Ich löse es durch die Verwendung von Inline-Js mit RegisterJs