[gelöst] Matrix-Field-Modul: "Invalid argument supplied for foreach()" und "ksort() expects parameter 1 to be array, "
am 18.12.2009 - 00:48 Uhr in
Hallo
ich habe heute mal das Modul "Matrix-Field" ausprobiert, um cck felder zu erstellen die automatisch als Tabelle angezeigt werden. Damit ich die einegegbenen Werte in der Tabelle in einem View (verwende views 6.x-2.8) nutzen kann, habe ich die 6.x-2.x-dev Version von Matrix-Field verwendet (da die anderen Versionen Views nicht unterstützen).
Auf der Node-Ansicht wird auch alles schön dargestellt, es erscheinen keine Fehlermeldungen.
Wenn ich aber nun einen Wert vom Matrix-Field in einen View einbaue, erscheint zwar dieser wert in dem View, jedoch auch 3 Fehlermeldungen:
* warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/*****/modules/matrix/matrix.module on line 763.
* warning: ksort() expects parameter 1 to be array, null given in /home/httpd/vhosts/*****/modules/matrix/matrix.module on line 771.
* warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/*****/modules/matrix/matrix.module on line 773.
Ich habe bereits einen Bug-Report bei der Issue-queue der Modul-Seite hinterlassen, dachte jedoch, dass vielleicht ein erfahrener drupal-user die Fehler auf den ersten Blick entdeckt (was ich leider nich kann :( ).
Hier die code-schnipsel aus der matrix.module-Datei:
Linie 763-768:
//prepare data for calculation fields
foreach ($field_info['data'] as $row_id => $row) {
foreach ($row as $col_id => $value) {
$calcdata_cols[$col_id][] = $value;
$calcdata_rows[$row_id][] = $value;
}
}
Linie 770-794:
//replace blank cells with a dash
ksort($field_info['data']);
$data = array();
foreach ($field_info['data'] as $row_index => $row) {
ksort($row);
foreach ($row as $col_index => $cell_value) {
$element_type = ($mode == 'rows') ? $rows_elements[$row_index]['#type'] : $cols_elements[$col_index]['#type'];
if ($mode == 'rows') {
$element_type = $rows_elements[$row_index]['#type'];
$calc_data = array('calc_method' => $rows_elements[$row_index]['#calc_method'], 'data' => $calcdata_cols[$col_index]);
}
else {
$element_type = $cols_elements[$col_index]['#type'];
$calc_data = array('calc_method' => $cols_elements[$col_index]['#calc_method'], 'data' => $calcdata_rows[$row_index]);
}
$data[$row_index][$col_index] = _matrix_format_cell($element_type, $cell_value, $empty, $calc_data);
if ($data[$row_index][$col_index] != $empty) {
$show_row = $row_index;
}
}
$row_label = '<div class="matrix-first-col">'. array_shift($rows_header) .'</div>';
array_unshift($data[$row_index], $row_label);
}
Falls jemand mit Durchblick in php den Fehler auf Anhieb findet wäre ich froh und dankbar um jede Hilfe zu dem Problem!
mfg
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast du diesen Patch schon
am 19.12.2009 - 20:30 Uhr
Hast du diesen Patch schon versucht?
http://drupal.org/node/498802
-----------
Kooperative Netze Hamburg
habe nun die
am 20.12.2009 - 15:46 Uhr
habe nun die matrix.modul-datei mit diesem patch gepatched, jetzt erhalte ich zwar die vorherigen fehlermeldungen nicht mehr, dafür diese:
# warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/****/modules/matrix/matrix.module on line 764.
# warning: ksort() expects parameter 1 to be array, null given in /home/httpd/vhosts/****/modules/matrix/matrix.module on line 772.
# warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/****/modules/matrix/matrix.module on line 774.
dieser patch ist doch aber in der 6.x-2.x-dev Version des Matrix-Moduls sowieso bereits enthalten, da der Patch am 16. juli 2009 übermittelt wurde und die 6.x-2.x-dev Version auf den 25. juli 2009 datiert ist und der modul-maintainer beim patch den status fixed notiert hat..
die dev-version muss in der
am 21.12.2009 - 00:31 Uhr
die dev-version muss in der tat nicht gepatched werden, ich habe den fehler gefunden: hatte in der Ansicht noch alten content, welcher nur aus cck-felder bestand und kein matrix-field beinhaltete. ich habe nun allen content gelöscht und alles sauber neu erstellt mite einer matrix-field-tabelle, nun wird auch im view keine fehlermeldung mehr angezeigt.
mfg