Jump to content

Override classes Prestashop


kevingic
 Share

Recommended Posts

Bonjour à tous,

Dans mon module je souhaiterai override la classes Attribute de Prestashop en ajoutant un champs dans son formulaire d'ajout.

 

Pour cela je place le fichier dans /my_module/override/classes/Attribute.php

 

Lors de l'installation tous ce passe bien mais lors de la désinstallation le fichier n'est pas supprimer du dossier et son contenu est étrange.

 

Voici la classe Attribute après installation:

class Attribute extends AttributeCore
{
    public $downloadable;

    /**
     * @see ObjectModel::$definition
     */
    public static $definition = array(
        'table' => 'attribute',
        'primary' => 'id_attribute',
        'multilang' => true,
        'fields' => array(
            'id_attribute_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'color' =>                array('type' => self::TYPE_STRING, 'validate' => 'isColor'),
            'position' =>            array('type' => self::TYPE_INT, 'validate' => 'isInt'),

            /* Lang fields */
            'name'          =>   array(
                'type' => self::TYPE_STRING,
                'lang' => true,
                'validate' => 'isGenericName',
                'required' => true,
                'size' => 128
            ),
            'downloadable'  =>  array('type' => self::TYPE_STRING, 'required' => true)
        )
    );

    public function __construct($id = null, $id_lang = null, $id_shop = null)
    {
        $this->image_dir = _PS_COL_IMG_DIR_;

        parent::__construct($id, $id_lang, $id_shop);
    }
}

Et voici le contenu de ce fichier après désinstallation du module:

class Attribute extends AttributeCore
{
        'table' => 'attribute',
        'primary' => 'id_attribute',
        'multilang' => true,
        'fields' => array(
            'id_attribute_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'color' =>                array('type' => self::TYPE_STRING, 'validate' => 'isColor'),
            'position' =>            array('type' => self::TYPE_INT, 'validate' => 'isInt'),
            
            'name'          =>   array(
                'type' => self::TYPE_STRING,
                'lang' => true,
                'validate' => 'isGenericName',
                'required' => true,
                'size' => 128
            ),
            'downloadable'  =>  array('type' => self::TYPE_STRING, 'required' => true)
        )
    );
}

Je précise que j'override aussi la classe PaymentModule et celle-ci réagi correctement à l'installation comme à la désinstallation.

 

Merci d'avance pour votre aide :)

Share this post


Link to post
Share on other sites

Bonjour,

 

c'est vrai que c'est assez étonnant vérifie dans ton module si tu as une methode uninstal en rapport avec ton autre override.

Peut être que la méthode utiliser est à reproduire.

 

Merci de ta réponse mais dans ma fonction de désinstallation, RAS en ce qui concerne le fichier PaymentModule.php.

 

Je précise aussi que la fonction Product.php dont je réalise un override similaire pose le même problème.

Share this post


Link to post
Share on other sites

c'est très bizarre mais j'ai déjà rencontrer un problème d'ordre similaire.

Dans ton override as tu ouvert une balise "?php>".

Si oui l'as tu fermés ?

car il ne faut tout simplement pas. Ca créer des erreurs dans les interprétations du code de Prestashop.

ça peut paraître anodins mais ça ne l'est pas ! 

en tout cas j’espère que c'est le problème car sinon je ne vois pas du tout.

Share this post


Link to post
Share on other sites

c'est très bizarre mais j'ai déjà rencontrer un problème d'ordre similaire.

Dans ton override as tu ouvert une balise "?php>".

Si oui l'as tu fermés ?

car il ne faut tout simplement pas. Ca créer des erreurs dans les interprétations du code de Prestashop.

ça peut paraître anodins mais ça ne l'est pas ! 

en tout cas j’espère que c'est le problème car sinon je ne vois pas du tout.

 

Hélas non, je n'ai pas fermer la balise php ... 

Je continu mes investigation :)

 

Merci quand même

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More