phil56 Posted July 8, 2011 Share Posted July 8, 2011 Bonjour,Après une très longue recherche ...Je souhaite insérer un champ personnalisé dans la page adminorders dans le bo. Nom du champ : datelivraisonTable orders mise à jour avec insertion du champ datelivraison echo ' <form action="'.$currentIndex.'&view;'.$this->table.'&token;='.$this->token.'" method="post" style="text-align:center;">'; echo'<input size="55" type="text" name="datelivraison" value="'.htmlentities($this->getFieldValue($obj, 'datelivraison')).'" style="width: 130px; margin-right: 44px;" /> <input type="hidden" name="id_order" value="'.$order->id.'" /> <input type="submit" name="submitLivraison" value="'.$this->l('Change').'" class="button" /> </form>'; et toujours dans adminorders : if (Tools::isSubmit('submitLivraison') AND ($id_order = (int)(Tools::getValue('id_order'))) AND Validate::isLoadedObject($order = new Order($id_order))) { if ($this->tabAccess['edit'] === '1') { $_GET['view'.$this->table] = true; $datelivraison = pSQL(Tools::getValue('datelivraison')); $order->datelivraison = $datelivraison; $order->update(); } else $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } Et l'erreur suivante apparaît Notice: Undefined variable: obj in C:\wamp\www\hirondelle\tabs\AdminOrders.php La recherche sur le forum "comment définir une variable est = 0"Une idée ? Link to comment Share on other sites More sharing options...
leeloo Posted July 10, 2011 Share Posted July 10, 2011 Bonjour,Je pense que vous n'avez pas défini votre variable datelivraison dans classes/order.php.Regardez dans classes/order.php, vous verrez comment sont définies les variables déja présentes. Vous n'aurez qu'à faire de même pour votre nouvelle variable. Link to comment Share on other sites More sharing options...
phil56 Posted July 10, 2011 Author Share Posted July 10, 2011 Bonjour LeelooMerci pour votre réponse.J'ai bien conscience qu'il me faut modifier Classes/orders.Je cherche simplement un didacticiel sur les variables et leur définition. J'ai beau essayer dans tous les sens, je me retrouve avec la même erreur et quelques fois Clef de sécurité invalide !Donc en résumé je cherche à apprendre et à comprendre avant de plonger les mains dans le cambouis Bien cordialement,Phil Link to comment Share on other sites More sharing options...
Broceliande Posted July 11, 2011 Share Posted July 11, 2011 Salut , De toute façon il faut commencer par la classe orders , c'est clair , avant de passer aux modifs BO ...Autant créer une override, c'est fait pour ça ... Dans /override/classes tu crées un fichier Order.php Dedans tu mets : class Order extends OrderCore { public $datelivraison; // j'ajoute le champ public function getFields() { $fields = parent::getFields(); $fields['datelivraison'] = pSQL($this->datelivraison); } } il est clair que le champ datelivraison doit être crée au préalable dans la table (ps_)order ....en principe , le champ devrait être disponible désormais dans ton admin BO , et ajouté correctement à la table...A charge pour toi que ta classe Admin soit proprement ajustée . Link to comment Share on other sites More sharing options...
phil56 Posted September 4, 2011 Author Share Posted September 4, 2011 Bonjour, Merci Brocéliande pour ta réponse Breton et têtu, je ne désespère jamais ! Je pense que cette solution aidera plus d'un et elle peut être adaptée en fonction de ses besoins : Voici la solution : ---> créer un fichier override/classes/Order.php <?php class Order extends OrderCore { public $datelivraison; // j'ajoute le champ public function getFields() { parent::validateFields(); $fields['datelivraison'] = pSQL($this->datelivraison); return $fields; } } ?> ----> Ajouter dans tabs/AdminOrders.php : ligne 203 /* datelivraison */ if (Tools::isSubmit('submitLivraison') AND ($id_order = (int)(Tools::getValue('id_order'))) AND Validate::isLoadedObject($order = new Order($id_order))) { if ($this->tabAccess['edit'] === '1') { $_GET['view'.$this->table] = true; $datelivraison = pSQL(Tools::getValue('datelivraison')); $order->datelivraison = $datelivraison; $order->update(); } else $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } /* datelivraison */ ----> Ajouter dans tabs/AdminOrders.php : ligne 585 /* Display datelivraison */ echo '<br /> <fieldset style="width: 400px"> <legend><img src="../img/admin/delivery.gif" />'.$this->l('Date de livraison').'</legend>'; echo $this->l('Départ prévu le :').' '.Tools::displayDate($order->datelivraison, (int)$cookie->id_lang, true); echo '<br /> <form action="'.$currentIndex.'&view'.$this->table.'&token='.$this->token.'" method="post" style="text-align:center;"> <div class="margin-form"> <input type="text" name="datelivraison" value="" style="text-align: center" id="datelivraison" /> </div> <input type="hidden" name="id_order" value="'.$order->id.'" /> <input type="submit" name="submitLivraison" value="'.$this->l('Change').'" class="button" /> </form>'; includeDatepicker(array('datelivraison'), true); echo '</fieldset>'; /* Display datelivraison end*/ Maintenant je vais essayer de récupérer ce nouveau champ pour l'inscrire dans un template d'email ... à Bientôt ! Link to comment Share on other sites More sharing options...
phil56 Posted September 4, 2011 Author Share Posted September 4, 2011 OUps ! ---> Créer un nouveau champ dans la table ps_orders : datelivraison Type DATE Nul oui Default NULL Link to comment Share on other sites More sharing options...
phil56 Posted September 4, 2011 Author Share Posted September 4, 2011 Pour l'insertion dans un template email ---> Ajouter dans tabs/AdminOrders.php : ligne 126 $templateVars = array('{datelivraison}' => $order->datelivraison); Par contre je sèche pour le format de date. Il apparait sous la forme yy-mm-dd au lieu de mm-dd-yy Mon ptit doigt me dit que Broceliande connait la réponse. Isn't 'it ? @+ Link to comment Share on other sites More sharing options...
phil56 Posted September 5, 2011 Author Share Posted September 5, 2011 avec $templateVars = array( '{datelivraison}' => Tools::displayDate($order->datelivraison,(int)$cookie->id_lang,true), j'ai la valeur suivante : 28-11-2011 11-11-28 au lieu de 28-11-2011 --------------------> La modification fonctionne très bien dans le bo --------------------> Fatal Error dans le FO lors de la confirmation de commande. Pas de traitement de commande et le panier ne se vide pas. Une astuce ? 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