Solved: Eigene Blödheit: Hook_user $OP="Form" Problem
Eingetragen von dawehner (2639)
am 05.05.2008 - 21:21 Uhr in
am 05.05.2008 - 21:21 Uhr in
//Solved Lösung weiter unten
Ich will zusätzliche Felder zur Registrierung hinzufügen: das mache ich mit hook_user $OP="form". Für die zusätzlichen Felder habe ich folgenen Code:
<?php
$checkboxes = variable_get('userextra_checkbox', array());
for ($key = 0; $key < variable_get('userextra_lines', 10); $key++) {
for ($key2=0; $key2 < variable_get('userextra_rows', 5); $key2++) {
$form['extra-option'][$key][$key2] = array(
'#type' => 'checkboxes',
'#default_value' => 0,
'#options' => array(1 => $checkboxes['userextra_checkbox_data'][$key][$key2])
);
}
}
return $form;
?>
Dieser Code fügt einfach die Datenstruktur eine Tabelle in die Form ein, sodass ich sie später themen kann.
Funktioniert auch prima, s.h.
http://img.xrmb2.net/images/933635.jpeg
Nur gibts jetzt ein rießiges Problem:
Wenn sich jemand Registriegt kommt folgende Fehlermeldung:
* warning: md5() expects parameter 1 to be string, array given in /home/httpd/html/drupal/modules/user/user.module on line 192.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0, pass, init, status, uid, created) VALUES ('2test', '2test@example.com', '', '' at line 1 query: INSERT INTO users (name, mail, 0, pass, init, status, uid, created) VALUES ('2test', '2test@example.com', '', '2c7957db5a16cb869a8903b728aef3f5', '2test@example.com', 1, 17, 1210018718) in /home/httpd/html/drupal/includes/database.mysql.inc on line 172.
* user warning: Duplicate entry '0' for key 1 query: INSERT INTO og_uid_global (uid, og_email) VALUES (0, 1) in /home/httpd/html/drupal/includes/database.mysql.inc on line 172.
-> Drupal hat irgendwo die Idee, dass ein Passwort ausgefüllt wurde, was aber definitiv gar nicht sein kann, da gar Pass-Field vorhanden ist
Den Form Code gibt es hier: http://drupal.pastebin.com/m665e73ff
Der Fehler tritt in der Funktion user_save auf, wenn :
<?php
foreach ($array as $key => $value) {
switch ($key) {
case 'pass':
$fields[] = $key;
$values[] = md5($value);
$s[] = "'%s'";
break;
?>
Hat jemand auch nur ansatzweise eine Ahnung warum das ganze einen Fehler ausgibt?
PS:UPDATE: Solved
Lösung war ganz einfach; Das Problem ist, dass die FormAPI die Felder wenn sie ohne '#tree' => true vorhanden sind, anhand ihres direkten arrays-keys benennt. Also 0, 1, 2. Es sieht wohl so aus, also ob das Drupal gestört hat.
Als Lösung habe ich einfach noch
<?php
$form['extra-option'] = array(
'#type' => 'fieldset',
'#title' => t('extra'),
'#collapsible' => true,
'#tree' => true
);
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 2 Stunden 32 Minuten
vor 22 Stunden 22 Sekunden
vor 1 Tag 16 Stunden
vor 1 Tag 17 Stunden
vor 1 Tag 18 Stunden
vor 1 Tag 18 Stunden
vor 1 Tag 21 Stunden
vor 1 Tag 21 Stunden
vor 2 Tagen 13 Stunden
vor 2 Tagen 16 Stunden