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.
Drupal 7 introduit l'élément de formulaire #type
text_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.
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,
);