pouc Posted December 19, 2013 Share Posted December 19, 2013 (edited) 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 December 19, 2013 by pouc (see edit history) Link to comment Share on other sites More sharing options...
pouc Posted December 20, 2013 Author Share Posted December 20, 2013 il y a de l'évolution j'ai donc crée une feuille product.php ou j'ai intégré a l'intérieure ?phpclass 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 More sharing options...
Dida la geek Posted September 29, 2014 Share Posted September 29, 2014 Salut, Je suis interessé par ta recherche. Pourrais tu m'en dire plus ou tu en es si tu a resolut ton soucis ... Merci Dida Link to comment Share on other sites More sharing options...
pouc Posted September 29, 2014 Author Share Posted September 29, 2014 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now