Jump to content

création d'un module "nouvel employé"


Recommended Posts

Bonjour à tous,

je m'exerce en ce moment pour réussir à construire mon premier module.

J'ai fais plusieurs recherches sur internet, et au fur et à mesure, je prend des exemples, des échantillons de codes, je les adapte mais je vois bien que je ne suis pas encore au point😅

Je suis déjà content, l'installation et l'affichage du module apparait dans la liste "modules" du BO (pour un non expérimenté, c'est déjà une grande victoire :) )

Malheureusement le code ne fonctionne pas et j'ai beau chercher sur le web, je n'arrive pas à trouver...

Le but est que lorsqu'un nouveau client s'enregistre sur le site, il devient automatiquement "employé" (équipe)

Je sais que mon code comporte une erreur ou un oubli car je pense qu'il faut que je prenne en compte et que je rajoute les champs qui sont demandés lorsqu'on créé nous même un nouvel employé, mais là je sèche et je ne sais pas comment trouver de solution (id employé et langue je pense)

voici le code pour l'instant :

<?php

class NewEmployeeOnRegistration extends Module

{

    public function __construct()

    {

        $this->name = 'newemployeeonregistration';

        $this->tab = 'administration';

        $this->version = '1.0.0';

        $this->author = 'auteur';

        $this->need_instance = 0;

        $this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);

        $this->bootstrap = true;



        parent::__construct();



        $this->displayName = $this->l('Nouvel employé à l’inscription');

        $this->description = $this->l('Crée un nouvel employé lorsqu’un client s’inscrit sur le site Web.');

    }



    public function install()

    {

        return parent::install()

            && $this->registerHook('actionCustomerAccountAdd');

    }



    public function uninstall()

    {

        return parent::uninstall();

    }



    public function hookActionCustomerAccountAdd($params)

    {

        $employee = new Employee();

        $employee->firstname = $params['newCustomer']->firstname;

        $employee->lastname = $params['newCustomer']->lastname;

        $employee->email = $params['newCustomer']->email;

        $employee->active = true;

        $employee->add();

    }

}

Si quelqu'un a une piste pour que lorsqu'un client lambda s'enregistre en tant que nouveau client sur la page de connexion, celui ci est automatiquement enregistré en tant qu'employé.

Ceci est un exercice pour moi mais je sèche... et puis si cela peux servir à quelqu'un, j'en serai ravi

Merci

Link to comment
Share on other sites

Champs requis:

'lastname' =>                  array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
            'firstname' =>                 array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
            'email' =>                     array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128),
            'id_lang' =>                   array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),
            'passwd' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isPasswdAdmin', 'required' => true, 'size' => 32),
            'id_profile' =>                array('type' => self::TYPE_INT, 'validate' => 'isInt', 'required' => true),

Donc il manque passwd et id_profile dans votre code.

Juste pour info, c'est super dangereux votre histoire...

Link to comment
Share on other sites

ah ! :) si le module fonctionnait ce serait pour donner certaines autorisations limités à la catégorie "employé", auxquels ils seraient affectés :)

Mais j'ai reessayé avec les rajouts de password et id_profile, mais ca ne fonctionne toujours pas... j'ai du mal écrire les lignes en plus...

<?php

class NewEmployeeOnRegistration extends Module

{

    public function __construct()

    {

        $this->name = 'newemployeeonregistration';

        $this->tab = 'administration';

        $this->version = '1.0.0';

        $this->author = 'auteur';

        $this->need_instance = 0;

        $this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);

        $this->bootstrap = true;



        parent::__construct();



        $this->displayName = $this->l('Nouvel employé à l’inscription');

        $this->description = $this->l('Crée un nouvel employé lorsqu’un client s’inscrit sur le site Web.');

    }



    public function install()

    {

        return parent::install()

            && $this->registerHook('actionCustomerAccountAdd');

    }



    public function uninstall()

    {

        return parent::uninstall();

    }



    public function hookActionCustomerAccountAdd($params)

    {
        $employee = new Employee();
		
		$employee->lastname = $params['newCustomer']->lastname;

        $employee->firstname = $params['newCustomer']->firstname;

        $employee->email = $params['newCustomer']->email;
		
		$employee->id_lang = $params['newCustomer']->id_lang;
		
		$employee->passwd = $params['newCustomer']->passwd;
		
		$employee->id_profile = $params['newCustomer']->id_profile;

        $employee->active = true;

        $employee->add();

    }

}

 

Link to comment
Share on other sites

$employee->id_profile = $params['newCustomer']->id_profile;

Ça donne 0 ça, un customer n'a pas d'id_profile^^

Il faut l'écrire en dur suivant le profil employé que vous voulez affecter, par exemple le profil 1 (SuperAdmin):

$employee->id_profile = 1;

Ensuite, êtes-vous en mode debug activé ? Avez-vous regardé votre fichier error.log sur votre serveur ?

Link to comment
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
×
×
  • Create New...