Jump to content

ajout d'un champ dans la fiche client du back office


pouc

Recommended Posts

Bonjour ,

 

je travail sous prestashop 1.5.6.1 et je cherche à ajouter un champ de type booléen dans la fiche client du back office.

 

J'ai donc modifier le code php sur AdminCustomersController,  ajouter un  champ dans la BDD et jarrive à faire apparaître le nouveau champs.

 

Le problème est qu'aucune informations s'enregistrent et donc je bloque, en regardant les tutos sur le net j'ai cru comprendre qu'il fallait que je réalise une "extends" mais je ne sais ni comment la réaliser ni ce qu'il faut mettre à l'intérieure  ni ou l'introduire sur mon ftp.

 

Si quelqu'un avait une solution à me proposer.

 

Merci.

 

Baptiste

Edited by pouc (see edit history)
Link to comment
Share on other sites

il y a de l'évolution j'ai donc crée une feuille product.php ou j'ai intégré a l'intérieure

 

?php

class Customer extends AdminCustomersControllerCore
{
public $name_variable;
public function __construct($id = null)
{
  Customer::$definition['fields']['name_variable'] = array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat');
  parent::__construct($id);
}
}

 

et que j'ai installer dans override/classe

 

sachant que j'ai crée un champ booléen est-ce que quelqu'un pourrait m'aider à savoir si mon code est valide et si je l'ai placé dans le bon dossier.

 

Merci

 

Baptiste

Link to comment
Share on other sites

  • 9 months later...

Bonjour alors j'ai pas choisi la meilleur des solutions puisque en cas de mise à jour de presta ça va me supprimer le champs,j'ai pas réussi à faire un override.

 

En premier il faut créer un champs dans la table customer.

 

Ensuite j'ai ajouté dans le fichier customer.php que tu trouve dans /www/classes les lignes suivantes :

 

juste en dessous  de "class CustomerCore extends ObjectModel" j'ai ajouté "public $nom_du_champ;"

 

Dans le même fichier dans la fonction "public static $definition = array("

 

j'ai ajouté "'nom_du_champ' =>                 array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),"

 

J'ai ensuite copié Customer.php dans /www/override/classes

 

 

Après dans le fichier AdminCustomersController.php que tu trouve dans /www/controllers/admin

 

 

tu ajoutes dans le "$this->_select = '" ligne 70 environs

 

'nom_du_champ' => array(
                'title' => $this->l('nom_du_champ.'),
                'width' => 70,
                'align' => 'center',
                'type' => 'bool',
                'callback' => 'printnom_du_champIcon',
                'orderby' => false
            ),

 

 

Après dans "public function initProcess()" ligne 207

 

elseif (Tools::isSubmit('changenom_du_champVal') && $this->id_object)
        {
            if ($this->tabAccess['edit'] === '1')
                $this->action = 'change_nom_du_champ_val';
            else
                $this->errors[] = Tools::displayError('You do not have permission to edit this.');
        }

 

 

Ensuite ligne 410 juste en dessous de Optin

 

array(
                    'type' => 'radio',
                    'label' => $this->l('nom_du_champ:'),
                    'name' => 'nom_du_champ',
                    'required' => false,
                    'class' => 't',
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'nom_du_champ_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                        ),
                        array(
                            'id' => 'nom_du_champ_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                        )
                    ),
                    'desc' => $this->l('The customer has been added by salesforce.')
                ),

 

 

Ligne 930 en dessous de "printOptinIcon"

 

 

public function processChangesnom_du_champVal()
    {
        $customer = new Customer($this->id_object);
        if (!Validate::isLoadedObject($customer))
            $this->errors[] = Tools::displayError('An error occurred while updating customer information.');
        $customer->nom_du_champ = $customer->nom_du_champ ? 0 : 1;
        if (!$customer->update())
            $this->errors[] = Tools::displayError('An error occurred while updating customer information.');
        Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token);
    }
    public static function printnom_du_champIcon($value, $customer)
    {
        return '<a href="index.php?tab=AdminCustomers&id_customer='
            .(int)$customer['id_customer'].'&changenom_du_champVal&token='.Tools::getAdminTokenLite('AdminCustomers').'">
                '.($value ? '<img src="../img/admin/enabled.gif" />' : '<img src="../img/admin/disabled.gif" />').
            '</a>';
    }

 

Je pense n'avoir rien oublié si ça ne marche pas tiens moi au courant

 

Baptiste

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...