Afficher le bouton WYSIWYG ci-dessous l'attribut de catégorie personnalisée
-
30-10-2019 - |
Question
J'ai ajouté l'attribut de catégorie (TextArea) et Magento cesse d'afficher le bouton WYSIWYG si j'utilise un rendu personnalisé pour ce champ TextArea. Je veux demander que quelqu'un sache pourquoi cela se produit?
Voici mes pas. J'ai ajouté l'attribut de catégorie, une simple textarea avec le bouton WYSIWYG:
$installer->addAttribute('catalog_category', 'my_attr1', array(
'label' => 'My attribute 1',
'type' => 'text',
'input' => 'textarea',
'visible_on_front' => true,
'wysiwyg_enabled' => true,
'is_html_allowed_on_front' => true,
'visible' => true,
'required' => false,
'backend' => '',
'frontend' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
));
Tout fonctionne correctement, le bouton WYSIWYG s'affiche sous le champ.
Puis j'ai ajouté le deuxième attribut my_attr2
pour faire quelques tests. Ce deuxième attribut utilise ma classe de rendu personnalisé (voir 'input_renderer' => 'my_custom'
) Parce que je dois étendre ce champ avec des fonctionnalités supplémentaires. J'ai vérifié que cet attribut a été ajouté correct et fonctionne à 100% correct. Cette classe My_Custom
étend le rendu de TextArea par défaut de Magento Varien_Data_Form_Element_Textarea
Il ressemble donc et fonctionne exactement de la même manière que le champ TextArea standard.
Mais pour une raison quelconque, Magento cesse d'afficher le bouton WYSIWYG si j'utilise un rendu personnalisé.
$installer->addAttribute('catalog_category', 'my_attr2', array(
'label' => 'My attribute 2',
'type' => 'text',
'input' => 'textarea',
'input_renderer' => 'my_custom', //<---custom
'visible_on_front' => true,
'wysiwyg_enabled' => true,
'is_html_allowed_on_front' => true,
'visible' => true,
'required' => false,
'backend' => '',
'frontend' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
));
Voici la classe rendue (située dans Fichier Lib / My / Custom.php). J'ai vérifié que Magento utilise à coup sûr cette classe lors du rendu du deuxième attribut (j'ai ajouté la journalisation au constructeur pour m'assurer qu'elle fonctionne).
<?php
class My_Custom extends Varien_Data_Form_Element_Textarea
{
public function __construct($attributes=array())
{
parent::__construct($attributes);
Mage::log("My_Custom is working");
}
}
Même si je supprime tout le code de la classe Renderer Lib / My / Custom.php pour m'assurer que je n'ai rien cassé ou ne remplace rien, le bouton WYSIWYG n'est toujours pas affiché sous le deuxième attribut:
<?php
class My_Custom extends Varien_Data_Form_Element_Textarea
{
}
Et dès que je met à jour my_attr2
et supprimez la classe de rendu personnalisé, puis le bouton WYSIWYG s'affiche correctement sous la TextArea (tout comme il devrait l'être).
Pas de solution correcte