Írtam egy saját modult, ami a hook_form_alter() kapcsán betölt egy Javascriptet, ami megdizájnolja az űrlapot.
A problémám, hogy a felhasználói adatok űrlapon, ha valami adatot hibásan írok be (pl. a két jelszó nem egyezik meg), majd így akarom elmenteni, akkor a visszadobott űrlapra ezen hook_form_alter() függvény nem hívódik meg.
<?php /** * Implements hook_form_alter() * * Vannak .js-ek, amiket nem kell mindig betölteni, csak az adott űrlapon. Itt ezeket töltjük be. */ function mymodule_form_alter(&$form, &$form_state, $form_id) { //die($form_id); $path = drupal_get_path('module', 'mymodule'); switch ($form_id) { case "user_profile_form": drupal_add_js($path .'/user.js', array('scope' => 'footer', 'group' => JS_THEME)); drupal_add_js($path .'/user--edit.js', array('scope' => 'footer', 'group' => JS_THEME)); break; } } ?>
Tehát, amikor megnyitom az űrlapot, akkor lefutnak a javascriptek. El akarom menteni az űrlapot, de valami hibát vétek, akkor visszajön az űrlap, error message-ben szól, hogy nem egyeznek a jelszavak, viszont a fenti javascriptek nem futottak le.
Próbáltam, hogy az első ilyen kör után, betettem a modul elejére egy die($form_id)-t, majd F5-el frissítettem, s meglepő módon, lefutott az oldal, nem die()-olta le, azaz nem futatta le a hook_form_alter()-emet.
Valakinek valami ötlet, hogy ez miért van?
Rossz fórum :)
És persze a modulok fejlesztése fórumba szántam, csak félrekattintottam :(
#attached
Validálás után már a gyorstárazott űrlapot kapod, tehát nem fut le még egyszer a
hook_form_alter()
. Használd az#attached
attribútumot.Köszi!
Köszönöm, ez tényleg megoldás volt.
Leírom alább a kódot, mert egy jó órát eltöltöttem még vele, míg kitaláltam, hogy melyik hook-ba kell tenni (de szólj, ha tévedtem volna)!
Tehát végülis maradt a dolog a hook_form_alter()-ban, csak nem drupal_add_js()-t kellett hasnzálni, hanem a $form['#attached'] funkcióját.
helyett ezt kellett írni