Formular via form_alter() anpassen mit User-Variablen
am 12.03.2012 - 22:43 Uhr in
Hallo zusammen!
Ich möchte gerne ein Formular mittels form_alter() anpassen. Habe mir nun mein erstes kleines Mini-Modul erstellt.
Ich habe in dem Formular für einen Inhaltstyp ein Select-Feld mit vier vorgegebenen Werten. Nun möchte ich, dass Benutzer einer bestimmten Rolle zwei der Werten nicht setzen können.
Jedoch kann ich auf die Variable $user nicht zugreifen. Wie komme ich an diese Informationen.
So schaut mein Code bis jetzt aus:
function minimodul_form_alter(&$form, &$form_state, $form_id) {
if ($form_id=='hardware_node_form'){
$form['field_40seriennr']['#disabled']=true;
if (in_array('bestimmterolle',$user->roles)) {
unset($form['field_40status']['und']['#options'][3]);
unset($form['field_40status']['und']['#options'][4]);
}
}
}- Anmelden oder Registrieren um Kommentare zu schreiben

Versuch es mal mit global
am 12.03.2012 - 22:58 Uhr
Versuch es mal mit
global $user;am Anfang der Funktion.
Beste Grüße
Werner
Hi Werner,vielen Dank für
am 13.03.2012 - 16:44 Uhr
Hi Werner,
vielen Dank für deine Hilfe, klappt nun super :-)
Zwei Dinge habe ich allerdings noch.
Ich lasse mir mit
<?phpdsm($form);
?>
in dem Formular die Inhalte ausgeben. Den Punkt ['#disabled'] gibt es unter field_40seriennr nicht, funktioniert aber trotzdem?! Werden nicht alle Möglichkeiten aufgelistet? Oder gibt es hier Standardfunktionen, die für alle gelten?
Desweiteren gibt es Einträge, wie oben, mit einem vorangestellten '#'. Wo ist der Unterschied zu den anderen Einträgen ohne diesen Vorsatz?
Du siehst natürlich nur die
am 13.03.2012 - 17:29 Uhr
Du siehst natürlich nur die Einstellungen, die aktuell in Form-Array genutzt werden und nicht alles was möglich ist. Da muß ich Dich auf die Dokumentation zur Forms-API verweisen. Da findest Du zu den einzelnen Feldern, die in der Forms-API möglich sind, alle Informationen.
Ob mit oder ohne #, das sind meist Elemente der API, es sind Keys in einem PHP-Array. Die Bedeutung bekommst Du also nur aus der Dokumentation.
Beste Grüße
Werner
OK, werde ich mir mal genauer
am 13.03.2012 - 18:56 Uhr
OK, werde ich mir mal genauer ansehen.
Danke!