web-dev-qa-db-fra.com

Comment puis-je ajouter l'éditeur WYSIWYG pour ma zone de texte de formulaire personnalisé?

J'ai écrit un module de formulaire personnalisé en ce que j'ai placé une zone de texte:

J'ai essayé de cette façon:

$form['message'] = array(
  '#title' => t('Message'),
  '#type' => 'textarea',
  '#format' => 'full_html',
  '#default_value' => isset($ntemplates->message) ? $ntemplates->message : '',
  '#maxlength' => 255,
  '#attributes' => array(
  'class' => array('field_info'),
  'rows' => '5',
  'cols' => '200',
  ),
  '#wysiwyg' => TRUE,
);  

Mais ça ne marche pas. Comment puis-je intégrer l'éditeur WYSIWYG dans ma zone de texte?

Remarque: j'utilise wysiwyg-7.22 et ckeditor-3.6.6.2. Dans la section de base du corps de page, cela fonctionne. J'ai écrit un module personnalisé pour le formulaire. En cela, je ne peux pas intégrer l'éditeur wysiwyg.

5
Manu

Drupal 7 introduit l'élément de formulaire #typetext_format , qui est une version au format texte d'un textarea .

Pour intégrer WYSIWYG dans votre formulaire personnalisé, modifiez simplement l'attribut #type de la forme:

'#type' => 'text_format'

Remarque: Testé avec CKEditor v 7.x.

Si cela ne fonctionne pas pour vous, veuillez vérifier votre configuration WYSIWYG.

Pour masquer les options de format, voir: Comment masquer les options de format d'entrée et le texte d'aide sous une zone de texte?

Le type de champ de texte ci-dessus fonctionne en Drupal 7 et 8.

8
Pravin Ajaaz

Notez que la valeur stockée du champ est un tableau et non une chaîne. Donc, pour configurer et utiliser, faites:

  if (($intro = variable_get('groups_intro', NULL)) == NULL){
    $intro = '';
  }
  $form['groups_intro'] = array(
    '#type' => 'text_format',
    '#title' => t('intro'),
    '#default_value'=> $intro['value'],
    '#format' => $intro['format'],
    '#cols' => 200,
    '#rows' => 10,
    '#required' => TRUE,
  );
0
jons