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

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top