Warning: mb_strlen() expects parameter 1 to be string, array given ...
am 11.06.2013 - 12:49 Uhr in
Hallo,
beim Abschicken eines eigenen Moduls wir der Wert zwar richtig eingetragen, allerdings bekomme ich folgende Warnung:
Warning: mb_strlen() expects parameter 1 to be string, array given in drupal_strlen() (Zeile 478 von.../includes/unicode.inc
Das Modul modifiziert die Darstellung und die eingegebenen Werte eines Formulars.
Hat jemand eine Idee, wo das Probelm liegen könnte oder wie ich es eingrenzen kann?
Für Hinweise wäre ich sehr dankbar.
Gruss
Adriana
in der Hoffnung, dass jemand vielleicht etwas grundsätzlich falsches sieht, poste ich noch einige auszüge aus dem Code:
ich habe eine eigene validierungs und after_build funktion (definiere ich in form_alter)
$form['#validate'][] = 'formforraumreservation_validate_custom';
$form['#after_build'][] = 'formforraumreservation_after_build';
einige Beispiele, wie ich die Werte in after_build setze:
$options= array('07:45'=>t('07:45 Lektion 1 '),'08:40'=>t('08:40 Lektion 2 '),'09:35'=>t('09:35 Lektion 3 '),'10:35'=>t('10:35 Lektion 4 '),'11:30'=>t('11:30 Lektion 5 '),'12:25'=>t('12:25 Lektion 6 '),'13:20'=>t('13:20 Lektion 7 '),'14:15'=>t('14:15 Lektion 8 '),'15:10'=>t('15:10 Lektion 9 '),'16:05'=>t('16:05 Lektion 10 '),'17:00'=>t('17:00 Lektion 11 '));
$form['field_zeitpunkt'][und][0]['value']['time']=array('#type'=> 'select');
$form['field_zeitpunkt'][und][0]['value']['time']['#options']=$options;
...
$form['field_zeitpunkt'][und][0]['value']['time']['#name']= 'field_zeitpunkt[und][0][value][time]';
...
$form['field_lehrperson'][und][0]['value']['#value']=array('#value'=>$kuerzel );
und aus der validate funktion
$reservationsobjekt=$form_state['values']['field_reservationsobjekt'][und][0]['value'];
$zeitpunkt=$form_state['values']['field_zeitpunkt'][und][0]['value'];
- Anmelden oder Registrieren um Kommentare zu schreiben
Bist Du Dir sicher, dass Du
am 11.06.2013 - 20:01 Uhr
Bist Du Dir sicher, dass Du so ein Time-Field in einer eigenen Form verwenden kannst?
https://drupal.org/node/1931962 lässt darauf schließen, dass eher nicht....
['#name'] dürfte Dir jedenfalls nicht zur Verfügung stehen.
Gruß
Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
Danke für die Antwort. ich
am 13.06.2013 - 08:11 Uhr
Danke für die Antwort. ich verstehe sie aber noch nicht ganz. Name muss ich setzen, damit das Form überhaupt gespeichert wird.
Das ganze funktioniert eigentlich so, wie es sollte, bis auf die Warnung.
Wie siehst Du den Zusammenhang mit der Warnung und dem #name feld?
Gruss
Adriana
Hallo, vielleicht hilft dir
am 13.06.2013 - 21:04 Uhr
Hallo,
vielleicht hilft dir dieser thread weiter: https://drupal.org/node/1328146
Gruß
Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
...leider nicht. Das Problem
am 08.07.2013 - 09:11 Uhr
...leider nicht. Das Problem bestand bei diesem User, dass er den namen doppelt vergeben hatte... das ist bei mir nicht der Fall.
Falls jemandem noch einfällt, wie ich das Problem eingrenzen könnte, wäre ich für Hilfe sehr dankbar.
Ich ändere ja ein Feld zu einem select ab
$options= array('07:45'=>t('07:45 Lektion 1 '),'08:40'=>t('08:40 Lektion 2 '),'09:35'=>t('09:35 Lektion 3 '),'10:35'=>t('10:35 Lektion 4 '),'11:30'=>t('11:30 Lektion 5 '),'12:25'=>t('12:25 Lektion 6 '),'13:20'=>t('13:20 Lektion 7 '),'14:15'=>t('14:15 Lektion 8 '),'15:10'=>t('15:10 Lektion 9 '),'16:05'=>t('16:05 Lektion 10 '),'17:00'=>t('17:00 Lektion 11 '));
$form['field_zeitpunkt'][und][0]['value']['time']=array('#type'=> 'select');
$form['field_zeitpunkt'][und][0]['value']['time']['#options']=$options;
Kann es sein, dass ich an dieser Stelle noch mehr machen muss, damit Drupal auch beim validieren weiss, dass dies kein einfaches Textfeld mehr ist?
Oder liegt es am manipulieren des Feldes in der Validate-Funktion?
$wert_eingabedatum=$form_state['values']['field_zeitpunkt'][und][0]['value'];
$wertplus45=strtotime($wert_eingabedatum)+45*60;
$neu=strftime("%Y-%m-%dT%H:%M:%S",$wertplus45);
$form_state['values']['field_zeitpunkt'][und][0]['value2']=$neu;
Gruss
Adriana