Alex--77 Posted May 26, 2017 Share Posted May 26, 2017 Bonjour, J'ai ajouté une case à cocher dans le formulaire de création de compte.En fait c'est une boutique qui vend de l'alcool et du coup obligation d'une checkbox "Je certifie avoir plus de 18 ans" pour créer un compte (et donc acheter). J'ai donc fait un override de Customer.php dans /override/class : class Customer extends CustomerCore { public $majeur; /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'customer', 'primary' => 'id_customer', 'fields' => array( 'secure_key' => array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false), '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), 'passwd' => array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32), 'last_passwd_gen' => array('type' => self::TYPE_STRING, 'copy_post' => false), 'id_gender' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'birthday' => array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'), 'newsletter' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'newsletter_date_add' => array('type' => self::TYPE_DATE,'copy_post' => false), 'ip_registration_newsletter' => array('type' => self::TYPE_STRING, 'copy_post' => false), 'optin' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'majeur' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), //mon champs obligatoire 'website' => array('type' => self::TYPE_STRING, 'validate' => 'isUrl'), 'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'), 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isSiret'), 'ape' => array('type' => self::TYPE_STRING, 'validate' => 'isApe'), 'outstanding_allow_amount' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'copy_post' => false), 'show_public_prices' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'id_risk' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false), 'max_payment_days' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'deleted' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'note' => array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml', 'size' => 65000, 'copy_post' => false), 'is_guest' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false), 'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'id_shop_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'id_default_group' => array('type' => self::TYPE_INT, 'copy_post' => false), 'id_lang' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false), 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false), ), ); } Ensuite j'ajoute la checkbox dans le form du tpl (/themes/mon_theme/authentification.tpl) : <div class="checkbox form-group full-width txt-left required"> <input class="float-left is_required validate form-control" type="checkbox" name="majeur" id="majeur" value="1" /><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="majeur">{l s='Je certifie avoir plus de 18 ans'}<sup>*</sup></label> </div> J'ai également ajouté dans la BDD, dans la table ps_customer, un champ majeur. J'ai plus ou moins recopier les moins config que pour les optins. Tout fonctionne, si la case n'est pas cochée, l'inscription ne se fait pas et vise versa. Par contre, quand on ne coche pas cette case il y a une message d'erreur de Prestashop "Il y a une erreur, majeur requis". Je souhaite remplacer "majeur" par "majorité", je ne voies pas ou faire cette modifications ? J'ai essayé de changer le name et l'id dans le html mais ça ne marche pas. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted May 26, 2017 Share Posted May 26, 2017 Salut, comment ca se passe coté controller ? cdt Link to comment Share on other sites More sharing options...
Alex--77 Posted May 26, 2017 Author Share Posted May 26, 2017 Merci pour ton retour. Je n'ai rien fait côté controller, tu fais allusion au controller AuthController.php ? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted May 26, 2017 Share Posted May 26, 2017 (edited) Je n'ai rien fait côté controller, tu fais allusion au controller AuthController.php ? Oui, comment tu recupères le input "majeur" si tu ne fais rien dans le controller ? Peut tu donner le code html de ton form qu'on regarde ca ? cdt Edited May 26, 2017 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Alex--77 Posted May 26, 2017 Author Share Posted May 26, 2017 Voici le html du form : <form action="http://my-shop.net/connexion" method="post" id="account-creation_form" class="std box authentication-form "> <h3 class="full-width txt-left txt-uppercase century-bold txt-uppercase txt-pink">Vos informations personnelles</h3> <hr class="background-pink"> <div class="two-cols float-left"> <div class="form-group full-width txt-left"> <label class="float-left">Titre</label> <ul class="no-style txt-right gender"> <li class="float-left"> <input name="id_gender" id="id_gender1" value="1" checked="checked" class="float-left" type="radio"><span class="radio float-left"></span> <label for="id_gender1" class="top float-left radio-label">M</label> </li> <li class="float-left"> <input name="id_gender" id="id_gender2" value="2" class="float-left" type="radio"><span class="radio float-left"></span> <label for="id_gender2" class="top float-left radio-label">Mme</label> </li> </ul> </div> <div class="required form-group full-width txt-left form-error"> <input onkeyup="$('#firstname').val(this.value);" class="is_required validate form-control" data-validate="isName" id="customer_firstname" name="customer_firstname" value="" placeholder="Prénom *" type="text"> </div> <div class="required form-group full-width txt-left"> <input onkeyup="$('#lastname').val(this.value);" class="is_required validate form-control" data-validate="isName" id="customer_lastname" name="customer_lastname" value="" placeholder="Nom *" type="text"> </div> <div class="required form-group full-width txt-left form-ok"> <input class="is_required validate form-control" data-validate="isEmail" id="email" name="email" value="[email protected]" placehilder="E-mail *" type="email"> </div> <div class="required password form-group full-width txt-left"> <input class="is_required validate form-control" data-validate="isPasswd" name="passwd" id="passwd" placeholder="Mot de passe *" type="password"> <span class="form_info">(5 caractères min.)</span> </div> <div class="form-group full-width txt-left"> <label class="float-left">Date de naissance</label> <div class="float-left select-wrap"> <select id="days" name="days" class="form-control"> <option value="">-</option> <option value="1">1 </option> </select> <i class="fa fa-chevron-down txt-dark-grey txt-hover-white background-hover-pink"></i> </div> <div class="float-left select-wrap"> <select id="months" name="months" class="form-control"> <option value="">-</option> <option value="1">Janvier </option> </select> <i class="fa fa-chevron-down txt-dark-grey txt-hover-white background-hover-pink"></i> </div> <div class="float-left select-wrap"> <select id="years" name="years" class="form-control"> <option value="">-</option> <option value="2017">2017 </option> </select> <i class="fa fa-chevron-down txt-dark-grey txt-hover-white background-hover-pink"></i> </div> </div> <div class="checkbox form-group full-width txt-left"> <input class="float-left" name="newsletter" id="newsletter" value="1" type="checkbox"><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="newsletter">S'inscrire à la newsletter</label> </div> <div class="checkbox form-group full-width txt-left"> <input class="float-left" name="optin" id="optin" value="1" type="checkbox"><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="optin">Recevez les offres spéciales de nos partenaires</label> </div> </div> <!-- ajout de la checkbox "Majorité" --> <div class="checkbox form-group full-width txt-left required form-error"> <input class="float-left is_required validate form-control" name="majeur" id="majeur" value="1" type="checkbox"><span class="checkbox float-left"></span> <label class="float-left checkbox-label" for="majeur">Je certifie avoir plus de 18 ans<sup>*</sup></label> </div> <!-- END : ajout de la checkbox "Majorité" --> <div class="submit full-width txt-right"> <input name="email_create" value="1" type="hidden"> <input name="is_new_customer" value="1" type="hidden"> <input class="hidden" name="back" value="my-account" type="hidden"> <button type="submit" name="submitAccount" id="submitAccount" class="button background-dark-grey txt-white txt-uppercase txt-light-grey background-hover-pink float-right"> S'inscrire </button> <span class="form_info float-left txt-left">*Champ requis</span> </div> </form> Tout ce que j'ai fait est dans mon 1er post, j'ai ensuite testé mon formulaire et ça a marché.Je penses qu'il doit avoir un controller ou un EventListener qui surveille les champs requis de la class Customer.php. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted May 26, 2017 Share Posted May 26, 2017 (edited) ok donc on est sur le submitAccount avec: <button type="submit" name="submitAccount" id="submitAccount" class="button background-dark-grey txt-white txt-uppercase txt-light-grey background-hover-pink float-right"> dans le AuthController.php on a /** * Start forms process * @see FrontController::postProcess() */ public function postProcess() { if (Tools::isSubmit('SubmitCreate')) { $this->processSubmitCreate(); } if (Tools::isSubmit('submitAccount') || Tools::isSubmit('submitGuestAccount')) { $this->processSubmitAccount(); } if (Tools::isSubmit('SubmitLogin')) { $this->processSubmitLogin(); } } donc on va aller regarder dans processSubmitAccount()... /** * Process submit on an account */ protected function processSubmitAccount() { Hook::exec('actionBeforeSubmitAccount'); $this->create_account = true; if (Tools::isSubmit('submitAccount')) { $this->context->smarty->assign('email_create', 1); } // New Guest customer if (!Tools::getValue('is_new_customer', 1) && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) { $this->errors[] = Tools::displayError('You cannot create a guest account.'); } if (!Tools::getValue('is_new_customer', 1)) { $_POST['passwd'] = md5(time()._COOKIE_KEY_); } if ($guest_email = Tools::getValue('guest_email')) { $_POST['email'] = $guest_email; } // Checked the user address in case he changed his email address if (Validate::isEmail($email = Tools::getValue('email')) && !empty($email)) { if (Customer::customerExists($email)) { $this->errors[] = Tools::displayError('An account using this email address has already been registered.', false); } } // Preparing customer $customer = new Customer(); $lastnameAddress = Tools::getValue('lastname'); $firstnameAddress = Tools::getValue('firstname'); $_POST['lastname'] = Tools::getValue('customer_lastname', $lastnameAddress); $_POST['firstname'] = Tools::getValue('customer_firstname', $firstnameAddress); $addresses_types = array('address'); if (!Configuration::get('PS_ORDER_PROCESS_TYPE') && Configuration::get('PS_GUEST_CHECKOUT_ENABLED') && Tools::getValue('invoice_address')) { $addresses_types[] = 'address_invoice'; } $error_phone = false; if (Configuration::get('PS_ONE_PHONE_AT_LEAST')) { if (Tools::isSubmit('submitGuestAccount') || !Tools::getValue('is_new_customer')) { if (!Tools::getValue('phone') && !Tools::getValue('phone_mobile')) { $error_phone = true; } } elseif (((Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && Configuration::get('PS_ORDER_PROCESS_TYPE')) || (Configuration::get('PS_ORDER_PROCESS_TYPE') && !Tools::getValue('email_create')) || (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && Tools::getValue('email_create'))) && (!Tools::getValue('phone') && !Tools::getValue('phone_mobile'))) { $error_phone = true; } } if ($error_phone) { $this->errors[] = Tools::displayError('You must register at least one phone number.'); } $this->errors = array_unique(array_merge($this->errors, $customer->validateController())); // Check the requires fields which are settings in the BO $this->errors = $this->errors + $customer->validateFieldsRequiredDatabase(); if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) { if (!count($this->errors)) { $this->processCustomerNewsletter($customer); $customer->firstname = Tools::ucwords($customer->firstname); $customer->birthday = (empty($_POST['years']) ? '' : (int)Tools::getValue('years').'-'.(int)Tools::getValue('months').'-'.(int)Tools::getValue('days')); if (!Validate::isBirthDate($customer->birthday)) { $this->errors[] = Tools::displayError('Invalid date of birth.'); } // New Guest customer $customer->is_guest = (Tools::isSubmit('is_new_customer') ? !Tools::getValue('is_new_customer', 1) : 0); $customer->active = 1; if (!count($this->errors)) { if ($customer->add()) { if (!$customer->is_guest) { if (!$this->sendConfirmationMail($customer)) { $this->errors[] = Tools::displayError('The email cannot be sent.'); } } $this->updateContext($customer); $this->context->cart->update(); Hook::exec('actionCustomerAccountAdd', array( '_POST' => $_POST, 'newCustomer' => $customer )); if ($this->ajax) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int)$this->context->cookie->id_customer, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice, 'token' => Tools::getToken(false) ); $this->ajaxDie(Tools::jsonEncode($return)); } if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back)) { Tools::redirect(html_entity_decode($back)); } // redirection: if cart is not empty : redirection to the cart if (count($this->context->cart->getProducts(true)) > 0) { $multi = (int)Tools::getValue('multi-shipping'); Tools::redirect('index.php?controller=order'.($multi ? '&multi-shipping='.$multi : '')); } // else : redirection to the account else { Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account')); } } else { $this->errors[] = Tools::displayError('An error occurred while creating your account.'); } } } } else { // if registration type is in one step, we save the address $_POST['lastname'] = $lastnameAddress; $_POST['firstname'] = $firstnameAddress; $post_back = $_POST; // Preparing addresses foreach ($addresses_types as $addresses_type) { $$addresses_type = new Address(); $$addresses_type->id_customer = 1; if ($addresses_type == 'address_invoice') { foreach ($_POST as $key => &$post) { if ($tmp = Tools::getValue($key.'_invoice')) { $post = $tmp; } } } $this->errors = array_unique(array_merge($this->errors, $$addresses_type->validateController())); if ($addresses_type == 'address_invoice') { $_POST = $post_back; } if (!($country = new Country($$addresses_type->id_country)) || !Validate::isLoadedObject($country)) { $this->errors[] = Tools::displayError('Country cannot be loaded with address->id_country'); } if (!$country->active) { $this->errors[] = Tools::displayError('This country is not active.'); } $postcode = $$addresses_type->postcode; /* Check zip code format */ if ($country->zip_code_format && !$country->checkZipCode($postcode)) { $this->errors[] = sprintf(Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format)))); } elseif (empty($postcode) && $country->need_zip_code) { $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); } elseif ($postcode && !Validate::isPostCode($postcode)) { $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); } if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) { $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.'); } elseif (!$country->need_identification_number) { $$addresses_type->dni = null; } if (Tools::isSubmit('submitAccount') || Tools::isSubmit('submitGuestAccount')) { if (!($country = new Country($$addresses_type->id_country, Configuration::get('PS_LANG_DEFAULT'))) || !Validate::isLoadedObject($country)) { $this->errors[] = Tools::displayError('Country is invalid'); } } $contains_state = isset($country) && is_object($country) ? (int)$country->contains_states: 0; $id_state = isset($$addresses_type) && is_object($$addresses_type) ? (int)$$addresses_type->id_state: 0; if ((Tools::isSubmit('submitAccount') || Tools::isSubmit('submitGuestAccount')) && $contains_state && !$id_state) { $this->errors[] = Tools::displayError('This country requires you to choose a State.'); } } } if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) && !(Tools::getValue('months') == '' && Tools::getValue('days') == '' && Tools::getValue('years') == '')) { $this->errors[] = Tools::displayError('Invalid date of birth'); } if (!count($this->errors)) { if (Customer::customerExists(Tools::getValue('email'))) { $this->errors[] = Tools::displayError('An account using this email address has already been registered. Please enter a valid password or request a new one. ', false); } $this->processCustomerNewsletter($customer); $customer->birthday = (empty($_POST['years']) ? '' : (int)Tools::getValue('years').'-'.(int)Tools::getValue('months').'-'.(int)Tools::getValue('days')); if (!Validate::isBirthDate($customer->birthday)) { $this->errors[] = Tools::displayError('Invalid date of birth'); } if (!count($this->errors)) { $customer->active = 1; // New Guest customer if (Tools::isSubmit('is_new_customer')) { $customer->is_guest = !Tools::getValue('is_new_customer', 1); } else { $customer->is_guest = 0; } if (!$customer->add()) { $this->errors[] = Tools::displayError('An error occurred while creating your account.'); } else { foreach ($addresses_types as $addresses_type) { $$addresses_type->id_customer = (int)$customer->id; if ($addresses_type == 'address_invoice') { foreach ($_POST as $key => &$post) { if ($tmp = Tools::getValue($key.'_invoice')) { $post = $tmp; } } } $this->errors = array_unique(array_merge($this->errors, $$addresses_type->validateController())); if ($addresses_type == 'address_invoice') { $_POST = $post_back; } if (!count($this->errors) && (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || $this->ajax || Tools::isSubmit('submitGuestAccount')) && !$$addresses_type->add()) { $this->errors[] = Tools::displayError('An error occurred while creating your address.'); } } if (!count($this->errors)) { if (!$customer->is_guest) { $this->context->customer = $customer; $customer->cleanGroups(); // we add the guest customer in the default customer group $customer->addGroups(array((int)Configuration::get('PS_CUSTOMER_GROUP'))); if (!$this->sendConfirmationMail($customer)) { $this->errors[] = Tools::displayError('The email cannot be sent.'); } } else { $customer->cleanGroups(); // we add the guest customer in the guest customer group $customer->addGroups(array((int)Configuration::get('PS_GUEST_GROUP'))); } $this->updateContext($customer); $this->context->cart->id_address_delivery = (int)Address::getFirstCustomerAddressId((int)$customer->id); $this->context->cart->id_address_invoice = (int)Address::getFirstCustomerAddressId((int)$customer->id); if (isset($address_invoice) && Validate::isLoadedObject($address_invoice)) { $this->context->cart->id_address_invoice = (int)$address_invoice->id; } if ($this->ajax && Configuration::get('PS_ORDER_PROCESS_TYPE')) { $delivery_option = array((int)$this->context->cart->id_address_delivery => (int)$this->context->cart->id_carrier.','); $this->context->cart->setDeliveryOption($delivery_option); } // If a logged guest logs in as a customer, the cart secure key was already set and needs to be updated $this->context->cart->update(); // Avoid articles without delivery address on the cart $this->context->cart->autosetProductAddress(); Hook::exec('actionCustomerAccountAdd', array( '_POST' => $_POST, 'newCustomer' => $customer )); if ($this->ajax) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int)$this->context->cookie->id_customer, 'id_address_delivery' => $this->context->cart->id_address_delivery, 'id_address_invoice' => $this->context->cart->id_address_invoice, 'token' => Tools::getToken(false) ); $this->ajaxDie(Tools::jsonEncode($return)); } // if registration type is in two steps, we redirect to register address if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) { Tools::redirect('index.php?controller=address'); } if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back)) { Tools::redirect(html_entity_decode($back)); } // redirection: if cart is not empty : redirection to the cart if (count($this->context->cart->getProducts(true)) > 0) { Tools::redirect('index.php?controller=order'.($multi = (int)Tools::getValue('multi-shipping') ? '&multi-shipping='.$multi : '')); } // else : redirection to the account else { Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account')); } } } } } if (count($this->errors)) { //for retro compatibility to display guest account creation form on authentication page if (Tools::getValue('submitGuestAccount')) { $_GET['display_guest_checkout'] = 1; } if (!Tools::getValue('is_new_customer')) { unset($_POST['passwd']); } if ($this->ajax) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => false, 'id_customer' => 0 ); $this->ajaxDie(Tools::jsonEncode($return)); } $this->context->smarty->assign('account_error', $this->errors); } } Edited May 26, 2017 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Alexandre Carette Posted May 26, 2017 Share Posted May 26, 2017 (edited) ici il crée l'objet Customer vers la ligne 409 // Preparing customer $customer = new Customer(); // on recupere notre input $majeur = Tools::getValue('majeur'); // on assigne la variable a l'objet $customer->majeur = $majeur; // suite du code $lastnameAddress = Tools::getValue('lastname'); // reste du code... normalement ca devrait être bon, bien sur il faut créer un override de AuthController.php Edited May 26, 2017 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Alex--77 Posted May 26, 2017 Author Share Posted May 26, 2017 (edited) Ah je n'avais pas vue ton dernier post. Entre temps j'ai remarqué que vers la ligne 440 dans AuthController.php, génère le message d'erreur : $this->errors = array_unique(array_merge($this->errors, $customer->validateController())); Ensuite je détecte si l'erreur existe, si oui je réécris le message : $this->errors = array_unique(array_merge($this->errors, $customer->validateController())); if($this->errors['majeur'] ) { $this->errors['majeur'] = Tools::displayError('La majorité est requise.'); } C'est correct ? En tout cas ça fonctionne. Je vais regarder de plus près le code de ton dernier post. Edited May 29, 2017 by Alex--77 (see edit history) Link to comment Share on other sites More sharing options...
Alexandre Carette Posted May 26, 2017 Share Posted May 26, 2017 (edited) oui ce que tu as fais est bon pour le message d'erreur, ce que je ne comprend pas a moins d'avoir une variable par défaut c'est comment tu peux avoir des entrées en base de donnée pour la colonne "majeur" sans le $customer->majeur = $majeur; Edited May 26, 2017 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Alex--77 Posted May 29, 2017 Author Share Posted May 29, 2017 (edited) Merci de ton aide, je n'aurais peut-être pas trouvé sans ton aide (ou du moins pas aussi vite). ce que je ne comprend pas a moins d'avoir une variable par défaut c'est comment tu peux avoir des entrées en base de donnée pour la colonne "majeur" sans le $customer->majeur = $majeur; Je ne sais pas trop mais en tout cas ça fonctionne, je me pencherais dessus plus tard. Edited May 29, 2017 by Alex--77 (see edit history) 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