Submitted by mouize on
Bonjour,
J'ai recemment créer un champs avec la fieldApi, rien de bien mechant. Ce champs est constitué d'un input text et d'un input textarea.
J'ai besoin de transformer l'input textarea en text_format, et là, c'est le drame.
A chaque fois que je tente d'ajouter un nouvel élément, ca m'efface tout ce que j'avais dans mes champs text_format.
Quelqu'un pourrait m'aider en me disant ou je me suis planté? Merci d'avance
Voici mon code
<?php
/
@file
* adds a formatter for text fields that creates a facebook button
/
/
Implement hook_formatter_field_info().
/
function my_fields_field_info() {
return array(
'my_fields_faq_formatter' => array(
'label' => t('FAQ fields'),
'description' => t('FAQ fields'),
'instance_settings' => array('text_processing' => 0),
'default_widget' => 'my_fields_faq_widget',
'default_formatter' => 'my_fields_faq_formatter',
),
);
}
/
* Implements hook_field_instance_settings_form().
/
function my_fields_field_instance_settings_form($field, $instance) {
$settings = $instance['settings'];
$form['text_processing'] = array(
'#type' => 'radios',
'#title' => t('Text processing'),
'#default_value' => $settings['text_processing'],
'#options' => array(
t('Plain text'),
t('Filtered text (user selects text format)'),
),
);
return $form;
}
function my_fields_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
// krumo($items);exit();
}
/
* Implements hook_field_widget_info().
/
function my_fields_field_widget_info() {
return array(
'my_fields_faq_widget' => array(
'label' => t('Default'),
'field types' => array('my_fields_faq_formatter'),
),
);
}
/
* Implements hook_field_widget_form().
/
function my_fields_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$required = $element['#required'];
$item =& $items[$delta];
$element['#extended'] = TRUE;
$element['question'] = array(
'#title' => t('Question'),
'#type' => 'textfield',
'#required' => $required,
'#default_value' => isset($item['question']) ? $item['question'] : '',
);
$element['response'] = array(
'#title' => t('Réponse'),
'#type' => 'textarea',
'#required' => $required,
'#default_value' => isset($item['response']) ? $item['response'] : '',
'#attributes' => array('class' => array('text-full')),
);
if ($instance['settings']['text_processing']) {
$element['response']['#base_type'] = $element['response']['#type'];
$element['response']['#type'] = 'text_format';
$element['response']['#format'] = isset($item['response']['format']) ? $item['response']['format'] : 'full_html';
$element['response']['#default_value'] = isset($item['response']['value']) ? $item['response']['value'] : '';
}
return $element;
}
/
* Implements hook_field_is_empty().
*/
function my_fields_field_is_empty($item, $field) {
$has_stuff = FALSE;
if (!empty($item['question']) && !empty($item['response'])) {
$has_stuff = TRUE;
}
return !$has_stuff;
}
/
Implements hook_filter_format_update().
*/
function my_fields_filter_format_update($format) {
field_cache_clear();
}
/**
* Implements hook_filter_format_disable().
*/
function my_fields_filter_format_disable($format) {
field_cache_clear();
}
function my_fields_field_schema($field) {
$columns = array(
'question' => array(
'description' => 'the faq question',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE
),
'response' => array(
'description' => 'the faq response',
'type' => 'text',
'size' => 'medium',
'not null' => TRUE,
),
'format' => array(
'type' => 'varchar',
'length' => 255,
'not null' => FALSE,
)
);
return array(
'columns' => $columns,
'format' => array('format'),
);
}