[gelöst] Vorauswahl eines Radiobuttons im Registrierungsformular via Link (GET)
Eingetragen von t2k (258)
am 03.03.2014 - 14:12 Uhr in
am 03.03.2014 - 14:12 Uhr in
Hallo!
Man kann sich auf meiner Site momentan mit verschiedenen Rollen (mit Auto-Assign-Role-Modul auswählbar per Radionbutton) registrieren.
Ich würde gern mit einem Link auf die Registrierungsseite verweisen und dabei einen Wert weitergeben, der dann jeweils einen der Radiobuttons aktiviert.
Gibt es da vielleicht eine Lösung über einen GET-Variable?
Also sowas wie "www.meineurl.de?q=user/register&rolle=xyz"?
Oder gibt es da irgendeine andere Lösung für?
Vielen Dank im voraus und Grüße!
t2k
- Anmelden oder Registrieren um Kommentare zu schreiben
Sieht nach etwas custom Code aus
am 06.03.2014 - 11:01 Uhr
Wenn ein Formular sauber mit der Form API erzeugt wurde – was fast immer zutrifft – lässt sich dieses mit hook_form_alter modifizieren und dabei z.B. auf eine GET-Variable reagieren. Prinzipiell könnte man das vllt. mit rules_forms realisieren, aber das Modul ist meiner Ansicht noch nicht ganz ausgereift. Für einige Anwendungsfälle gibt es fertige Module wie z.B. entityreference_prepopulate für entityreference Felder. Wenn es die nicht gibt bleibt nur etwas custom code am besten in einem Custom Module zu realisieren, dabei kann man sich z.B. vom Modul entityreference_prepopulate inspirieren lassen. Prinzipiell wäre das vllt. eine Funktion, die auch für andere Nutzer von autoassignrole interessieren könnte und vllt. jemand umsetzt, wenn man diese Idee mal als Feature Request in den Issues von autoassignrole auf d.o anregt.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Auf die Schnelle wird
am 08.03.2014 - 01:46 Uhr
Auf die Schnelle wird wahrscheinlich die hook-form-alter-Version die Beste sein, oder?
Wie müsste das denn ungefähr aussehen, wenn ich mit:
www.meineurl.de?q=user/register&rolle=xyz
auf die Register-Seite verweise und dort den Radiobutton für die Rolle "xyz" ausgewählt habe will?
Danke im voraus und Grüße!
t2k
Hallo,wenn Du was auf die
am 08.03.2014 - 14:13 Uhr
Hallo,
wenn Du was auf die Schnelle willst, mache es halt mit JavaScript - da spricht in diesem Fall nichts dagegen.Damit kannst sowohl get-Parameter auslesen als auch Radiobutton als checked setzen.
so ungefähr:
(function($){
$(document).ready(function ($) {
setRadiobuttonChecked();
});
function setRadiobuttonChecked() {
var pathname = window.location.pathname;
if (pathname.indexOf('xyz') > -1){
$("DeinRadioboxSelector").attr('checked',true);
}
}
}(jQuery));
Gruß
Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
Auf die Schnelle ...
am 08.03.2014 - 14:12 Uhr
... ist Javascript hier auch nicht schneller verbaut wie PHP mit dem Nachteil, daß man nicht sicher gehen kann, ob Scripte beim Browser auch tatsächlich ausgeführt werden (wenn vllt. deaktiviert z.B. durch NoScript).
Hier der saubere Einstieg: https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
also sorry, nicht schneller
am 08.03.2014 - 14:20 Uhr
also sorry, nicht schneller verbaut? Wenn man das oben in eine JS-Datei reinschreibt, die man vielleicht hat, ist man mit ein bisschen npassung für verschieden Fälle fertig...
Wenn ich mir Deine Lösung oben anschaue geht, das doch eher in Richtung Overkill, und das nur um eine Checkbox oder eine Radiobox anzukreuzen.
Da die Funktionilität nicht betroffen ist und nur ein bisschen mehr Bequemlichkeit gwschafft wird, sind die "Verluste" durch User, die kein JS benutzen wollen verkraftbar.
Gruß
Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
Custom Module oder custom JS-Datei
am 08.03.2014 - 14:27 Uhr
also sorry, nicht schneller verbaut? Wenn man das oben in eine JS-Datei reinschreibt, die man vielleicht hat, ist man mit ein bisschen npassung für verschieden Fälle fertig...
Das kann man auch umdrehen: Wenn man schon ein Custom Module hat oder zur Not auch ein Custom Template, dann ist der kleine Hook-Aufruf da auch ganz schnell eingebaut. Wenn man die Form ID rausgefunden hat und das Form-Element lokalisiert hat, dann man da ganz leicht den Default-Wert auf den Wert setzen, den man per Get bekommt. Unterm Strich auch nicht mehr Code als die Javascript-Lösung, aber kompatibler.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
wenn es so easy ist, da
am 08.03.2014 - 14:51 Uhr
wenn es so easy ist, da könntest Du doch t2k ein schnelle Lösung präsentieren...
Oben lese ich nur "rules_forms" und "entityreference_prepopulate" und jetzt auch noch Custom Module (fürs Ankreuzen einer Checkbox...)
Gruß
Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
Danke sehr für den
am 08.03.2014 - 18:35 Uhr
Danke sehr für den Lösungsansatz!!!
Ich würd gern auch sehen wie die andere schnelle Lösung aussieht.
Dann könnte ich das abwägen.
Vielen Dank und Grüße!
t2k
Hat Funktioniert!Allerdings
am 17.04.2014 - 00:54 Uhr
Hat Funktioniert!
Allerdings hat der jquery-Code bei mir nicht funktioniert.
Wen's interessiert, ich hab es so gemacht:
function getUrlVar(key){
var result = new RegExp(key + "=([^&]*)", "i").exec(window.location.search);
return result && unescape(result[1]) || "";
}
$(document).ready(function() {
$typ = getUrlVar("typ");
if ( $typ == "meinegetvariable") {
$('input:radio[id="meine-radio-button-id"]').attr('checked', 'checked');
}
else {
$('input:radio').removeAttr('checked');
}
});
Die jquery-GET-Funktion hab ich übrigens hierher:
https://gist.github.com/varemenos/2531765