FieldApi and #type => 'text_format'

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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'),
  );
}

Forum : 
Version de Drupal : 
Tags :