function matrix_process in Matrix field 6
Process the matrix type element before displaying the field.
Build the form element. When creating a form using FAPI #process, note that $element['#value'] is already set.
The $fields array is in $form['#field_info'][$element['#field_name']].
1 string reference to 'matrix_process'
- matrix_elements in ./
matrix.module - Implementation of hook_elements().
File
- ./
matrix.module, line 210 - Defines simple matrix field types.
Code
function matrix_process($element, $edit, $form_state, $form) {
$field = $form['#field_info'][$element['#field_name']];
if ($field['rows'] && $field['cols']) {
$rows = trim($field['rows']);
$cols = trim($field['cols']);
$rows = explode("\n", $rows);
$cols = explode("\n", $cols);
}
$processed_element = array(
'#tree' => TRUE,
'#weight' => $field['widget']['weight'],
'#theme' => 'matrix_table_form',
'#prefix' => '<div class="form-item matrix_field">',
'#suffix' => '</div>',
'#parents' => $element['#parents'],
'#title' => $element['#title'],
'#description' => $element['#description'],
'#required' => $element['#required'],
'#field_name' => $element['#field_name'],
'#type_name' => $element['#type_name'],
'#delta' => $element['#delta'],
'#columns' => $element['#columns'],
);
if ($cols) {
$header = array_merge(array(
'',
), $cols);
}
$first_col = $rows;
$rows = (array) $rows;
$i = 0;
foreach ($rows as $row) {
if ($row) {
$j = 0;
foreach ($cols as $col) {
if ($col) {
$processed_element[$i][$j] = array(
'#type' => 'textfield',
'#size' => $field['size'],
'#default_value' => isset($edit[$i][$j]) ? $edit[$i][$j] : $element['#default_value'][$i][$j],
'#attributes' => array(
'class' => "matrix-column-{$i} matrix-row-{$j} matrix-cell-{$i}-{$j}",
),
);
$j++;
}
}
$i++;
}
}
$processed_element['header'] = array(
'#value' => $header,
);
$processed_element['first_col'] = array(
'#value' => $first_col,
);
return $processed_element;
}