hogyan tudnám modulból felülvezérelni a következő fügvényt user_register_submit?

dorion képe

A feladatom az lenne, hogy egy kibővített regisztrációs űrlapot (a bővítést a profile modullal végeztem), el kellene küldeni egyrészt a regisztrált kliensnek, másrészt egy belső emailre.

Azonban az emailben benne kéne hogy legyen minden új profil_* változó is.

Azonban a fent említett fügvény ezket sehogy sem kezeli le. Az egyik megoldás persze az lenne ha átírnám ezt a függvényt a core-ban, de azt nem szívesen tenném, mivel ez egy multi-site instaláció.

Meg tudom ezt írni modulként vagy hackeljek?

5.0 stabil drupalt használok.

Hojtsy Gábor képe

A hook_form_alter()-t használva felvehetsz egy új #submit kezelőfüggvényt, ami ugyanúgy megkapja az űrlap adatait, és azt csinál vele, amit akar. A form_alter-ről van egy tipp itt a kézikönyvben.

0
0
dorion képe

Úgy mint itt?

Ha már itt tartunk lehet én vagyok a béna de hol lehet tisztába jönni pl a $user, $form, $config változók jelenlegi és lehetséges felépítéséről?

function ldapauth_form_alter($form_id, &$form) {
if (isset($form['#validate']['user_login_validate'])) {
$form['#validate'] = array('ldapauth_login_validate' => array());
}
else if (isset($form['#submit']['user_pass_submit'])) {
$form['#submit'] = array('ldapauth_pass_submit' => array());
}
}

0
0
Hojtsy Gábor képe

Nem átírni kellene azokat a tömböket, hanem hozzáadni egy új elemet. Ha átírod, akkor a rendes user submit kezelés nem fog lefutni.

A kért változókat bármikor var_dump()-olhatod, ezek felépítése az aktuálisan használt moduloktól, a bekapcsolt profil mezőktől stb jelentősen függ.

0
0
dorion képe

Én most konkrétan ezt csinálom

function felveteli_form_alter($form_id, &$form) {                                                                            
    if (isset($form['#validate']['user_register_submit'])) {                                                                 
        $form['#validate'] = array('felveteli_register_submit' => array());                                                  
    }                                                                                                                        
} 

Nekem nincs bajom az eredeti függvénnyel csak hiányos, ugyanis nem tudom használni a profile_változóat ezért az eredeti fügvényt lemásolom, kicsit módosítom és ezzel felül vezérlem az eredetit.

Szerintem pont ezt tanácsoltad te is.

0
0
Hojtsy Gábor képe

Én azt tanácsoltam, hogy végy fel még egy bejegyzést a #submit (és/vagy #validate) tömbbe, nem pedig azt, hogy helyettesítsd az alapértelmezett működést. Persze ha neked gond az, hogy mindkettő lefut, mert feltétlenül helyettesíteni és nem kiegészíteni akarod, akkor kénytelen vagy helyettesíteni, valóban.

0
0
dorion képe

Köszönöm a tippet, sikerült megoldanom.

Ám bátor az utóbbi hozzászólásod kicsit elgondolkodtatott és csak most esett le hogy miért tömb a #validate :-) Tehát nekem elég lett volna csak a plusz fügvényeket esetleg változtatásokat eszközőlnöm a változókon, én nem kell az egész validate folyamatot lemásolnom és módosítanom.

Ügye jól értelmezem?

0
0
Hojtsy Gábor képe

Pontosan így van, akárhány validate és submit függvény lehet egy űrlapra kötve. Ez például a (biztonsági) frissítésnél nagyon jó, mert nem kell újra megnézned, hogy az újabb Drupal verzióban változott-e az adott függvény, hiszen az úgyis meghívódik.

0
0