Jump to content

franckm1000

Members
  • Posts

    742
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by franckm1000

  1. Mets {debug} au début de ton TPL et regardes la POPUP qui doit s'ouvrir au chargement de la page. Dedans, tu as toutes les variables SMARTY envoyées par le contrôleur, il y a peut-être ce que tu cherches.
  2. Pour moi c'est vos listes à puces qui sont mal dimensionnées. La classe: .col-md-3{ width:25% } devrait être passée en: .col-md-3{ width:21% } Par contre, je ne peux pas dire où il se trouve exactement car il doit y avoir le cache activé, je ne vois pas le fichier CSS en cause.
  3. Quelle couleur rose ? je vois pas bien ? Vous voulez dire ce fond ? Si c'est ça alors en inspectant la DIV header-container vous voyez ça: Enlever ce background à l'endroit indiqué (theme5.css) Puis inspecter la DIV header, on a: Enlever le background de l'ID header, vous aurez alors pour moi un fond blanc. Encore une fois, si par rose vous parlez bien de ce fond.
  4. Bonjour, Firebug fonctionne aujourd'hui comme hier. Je ne connais pas le fonctionnement de Prestashop exactement au niveau du cache mais il faut certainement commencer par désactiver le cache pour éviter d'inspecter des fichiers du cache. Ensuite, si tu encapsules bien la Div qui possède la couleur que tu veux changer alors dans la cascade de style (par forcément au premier niveau mais peut-être plus bas) tu retrouveras forcément l'endroit où la couleur est settée (qui n'est pas forcément le global.css)
  5. Comme il l'a écrit, le bouton renverra bien oui ou non. Le bouton radio accepte bien des valeurs et renvoie bien le "value" du radio sélectionné Par contre, rassures-moi, tu sélectionnes au moins une des deux lignes au moins ? Parce que sinon, c'est sûr que tu récupères rien. Au pire, mets ça pour l'instant: <form method="POST" id="myModule" action="" > Allez vous bien ? <input type="radio" name="mymodule" value="oui" checked="checked"> oui <input type="radio" name="mymodule" value="non"> non<br> <input type="submit" value="Envoyer" name="submitMyModule"> <!-- Note: un input devrait toujours se fermer comme ça ; /> car sinon la balise n'est pas fermée --> </form> Ensuite côté serveur, fais simplement ça: public function trie(){ if(Tools::isSubmit('submitMyModule')){ //Je tracke pour voir si je passe bien postProcess pour mettre à jour die('Ok je passe en modif'); $var = $_POST['mymodule']; $query = "INSERT INTO ps_sondage (champ1) VALUES ('$var')"; $lRetour = Db::getInstance()->execute($query); if(!$lRetour){ echo "j'ai un problème d'insertion..."; } } } Si tu passes dans le code, alors ton script doit s'arrêter et afficher une simple page blanche avec "Ok je passe en modif" Si le script ne s'arrête pas, c'est que tu ne passes pas en postProcess. Au passage le action="" de la balise form, c'est pas TOP je trouve (même si je suppose qu'on doit recharger la page en cours et que ton script s'y trouve déjà ?)
  6. Es-tu sûr de passer dans ta fonction trie() ? Mets: public function trie(){ if(Tools::isSubmit('submitMyModule')){ //Je tracke pour voir si je passe bien en postProcess pour mettre à jour echo 'Ok je passe en modif'; $var = $_POST['mymodule']; $query = "INSERT INTO`ps_sondage' ('champ1') VALUES ('{$var}'); "; Db::getInstance()->execute($query); } } Ta requête INSERT me semble également bizarre. Je comprends pas ce que viennent faire ces accolades ? En outre, tu devrais faire au moins un retour si la méthode d'insert te renvoie false. public function trie(){ if(Tools::isSubmit('submitMyModule')){ //Je tracke pour voir si je passe bien postProcess pour mettre à jour echo 'Ok je passe en modif'; $var = $_POST['mymodule']; $query = "INSERT INTO ps_sondage (champ1) VALUES ('$var')"; $lRetour = Db::getInstance()->execute($query); if(!$lRetour){ echo "j'ai un problème d'insertion..."; } } }
  7. Cool... Bah je pense pas que ça pose de souci particulier, le changement proposé ne fait que mettre en forme la chaîne de caractères. Si ça l'a fait une fois, ça devrait le faire toutes les fois
  8. Tu parles du panier dans la boutique (mis à jour en AJAX) ou du panier dans le tunnel de commande ?
  9. Essaies de changer ces deux lignes: $address->lastname = $format->formatName(EbayOrder::_formatFamilyName($this->familyname)); $address->firstname = $format->formatName($this->firstname); En: $address->lastname = strtoupper($format->formatName(EbayOrder::_formatFamilyName($this->familyname))); $address->firstname = ucwords(strtolower($format->formatName($this->firstname)));
  10. Il semblerait qu'il faille d'abord aller dans le répertoire /cache depuis le racine et supprimer le fichier class_index.php Il sera automatiquement régénéré et il mettra à jour ses tableaux pour renvoyer vers l'override de la classe Customer. Car ici, je pense qu'en fait tu ne passes pas dans la surcharge. De ce fait, le fait que ça marche pour le prénom me fait dire que tu as du faire des modifs à un autre endroit pour impacter le prénom ?
  11. Par contre, pour plus de lisibilité et pour éviter de toucher au Core, je te conseille de faire ceci. Remets ton fichier classes/customer.php en version d'origine. Créé un fichier php que tu nommes Customer.php à cet endroit : /override/classes/Customer.php et mets le code suivant dedans: <?php class Customer extends CustomerCore{ public function add($autodate = true, $null_values = true){ $this->lastname = strtoupper($this->lastname); $this->firstname = ucwords(strtolower($this->firstname)); parent::add($autodate, $null_values); } } ?> Testes pour voir, c'est mieux de ne pas toucher aux fichiers Core.
  12. Y a un problème quelque part. Clairement, je pense que tu NE PASSES PAS à l'endroit où tu as fait des modifs (lignes 779 et 780). J'aurais plutôt tendance à penser vu le code (if $this->update) qu'on passe ici en modification. Donc enlèves les modifs que tu as fais car à mon avis en modification de client tu te prendras encore une erreur de page blanche. Car comme dit plus haut, je me suis trompé, uccase() n'existe pas comme fonction PHP. Donc si tu passais là, crois-moi tu te prendrais une grosse erreur et une page blanche (comme tu avais eu plus haut). Je pense que le code où tu modifies n'est pas le code pour l'enregistrement d'un nouveau client. Encore une fois, essaies de remplacer: public function add($autodate = true, $null_values = true) { $this->id_shop = ($this->id_shop) ? $this->id_shop : Context::getContext()->shop->id; Par : public function add($autodate = true, $null_values = true) { //Je commence mon ajout $this->lastname = strtoupper($this->lastname); $this->firstname = ucwords(strtolower($this->firstname)); //Je finis mon ajout $this->id_shop = ($this->id_shop) ? $this->id_shop : Context::getContext()->shop->id; Et je pense que ça devrait aller (car l'erreur de la page blanche était dû justement à ce fameux uccase qui n'existe pas).
  13. Non non mais je n'ai absolument rien contre le CSS... Tout est encore une fois question de point de vue et de l'attente du client (pour client ici je parle du e-commerçant). Quand je parle de bon format je parle du format souhaité par ce même client, pas le format habituel qui je me doute bien est correct depuis la version1.0 (un VARCHAR de 32 c'est un VARCHAR 32...). Il souhaite (ou peut-être pas ?) manifestement un système uniformisé pour les attributs des noms/prénoms de la classe customer à l'enregistrement (après effectivement pour le client lui même ça peut être gênant de mettre en forme directement à voir...). C'est pour cette raison qu'il est parti sur une solution côté serveur pour mettre en forme les chaînes à leur entrée. Remarquez qu'à mon sens côté serveur cela revient à insérer 2 lignes supplémentaires dans la méthode c'est pas non plus la fin du monde. Mais bon, bref je suis pas là pour me justifier de quoi que ce soit il fera bien comme il l'entend...
  14. Au temps pour moi, ucase n'est même pas une fonction PHP à ma connaissance, je ne sais même pas où j'ai bien pu imaginer ce truc, sûrement avec le UCASE de SQL ? C'est bien ucfirst, c'est pour ça que tu avais une erreur page blanche, tu avais une erreur de syntaxe. Par contre, essaies de le mettre où je t'avais dit au départ pour voir. C'est une question de point de vue, personnellement je préfère enregistrer les données au bon format dès le départ en base plutôt que de devoir transformer en post-process (pire en css) les informations. Mais les deux peuvent se concevoir.
  15. As tu vraiment bien recopié sans aucune erreur ? Tu as bien mis lastname (et pas lasname comme dans un message précédent ?) tu as bien mis le code après le { ? Il n' y avait aucune erreur de syntaxe ? Pour moi une page blanche s'apparente ici plus à une erreur de syntaxe C'est très bizarre que ça te fasse une page blanche pour ce que j'ai mis... mais bon
  16. Pas de panique, tu rajoutes simplement ces deux lignes ici: public function add($autodate = true, $null_values = true) { //Je commence mon ajout $this->lastname = strtoupper($this->lastname); $this->firstname = uccase($this->firstname); //Je finis mon ajout $this->id_shop = ($this->id_shop) ? $this->id_shop : Context::getContext()->shop->id; $this->id_shop_group = ($this->id_shop_group) ? $this->id_shop_group : Context::getContext()->shop->id_shop_group; Dans cette classe, lastname et firstname sont des attributs de cette classe donc $this->lastname ne fait qu'appeler la valeur de cet attribut (qui peut très bien être nulle). Derrière on ne fait qu'appliquer une petite fonction PHP pour mettre en majuscule. L'intérêt est que l'on change la valeur de l'attribut juste avant sa mise en base. La fonction add est une fonction de la classe ObjectModel. C'est cette méthode "générique" qui doit servir à faire les insert en base de tous les objets dédiés (produit, client, commande...). Chaque classe ensuite (product, customer...) surcharge à sa façon cette méthode pour y mettre ses traitements spécifiques (comme nous ici la mise majuscules). Aucun méga bug en perspective
  17. Je ne suis plus trop Prestashop mais tu peux toujours essayer ça: Dans la classe Customer.php trouves (pour moi ligne 204) : public function add($autodate = true, $null_values = true) { Et juste après, ajoutes un truc du style: $this->lastname = strtoupper($this->lastname); $this->firstname = ucfirst($this->firstname); Je pense que cette fonction add héritée de l'objet model sert pour les insertions en base mais c'est à tester...
  18. Sinon tu peux faire çà, c'est pas forcément très optimisé mais au moins tu assignes trois tableaux distinctes pour tes trois slides (et de ce fait tu peux généraliser à n slides) dans ta vue te permettant de pouvoir organiser le TPL dans l'ordre que tu veux. De cette façon, tu enverras dans ta vue trois tableaux products1, products2 et products3 dédiés. $productsData_slider_1 = Product::getProducts($id_lang, 0, 0, "id_product", "ASC", $slider_1, true); $productsData_slider_2 = Product::getProducts($id_lang, 0, 0, "id_product", "ASC", $slider_2, true); $productsData_slider_3 = Product::getProducts($id_lang, 0, 0, "id_product", "ASC", $slider_3, true); $lTabProducts = array($productsData_slider_1, $productsData_slider_2, $productsData_slider_3); $link = new Link(null, "http://"); foreach($lTabProducts as $key => $tableau_global){ $products = array(); foreach($tableau_global as $product){ $tmp = Product::getCover($product['id_product']); array_push($products, array( 'name' => $product['name'], 'link' => $link->getProductLink(new Product($product['id_product'])), 'image' => $link->getImageLink($product['link_rewrite'], $tmp['id_image']) )); } $this->smarty->assign(array('products'.($key+1) => $products)); } return $this->display(__FILE__, 'productshomeslider.tpl');
  19. Beaucoup trop vague comme question. Manque des modules ? mais quels modules ? besoin d'ajustement CSS pour les emplacements... mais pour quels modules ? Perso je veux bien aider et aiguiller mais je peux pas avec deux screenshots avant/après donner une soluce toute faite... En plus, pour faire des propositions, il faudrait au moins une adresse pour pouvoir inspecter le CSS
  20. Déjà, rien que pour ça, rien ne doit s'afficher. La variable have_non_virtual_products ne devant pas exister dans ton contexte, la DIV est en display none et ne sera donc pas affichée... Ensuite le contrôleur de ton module doit envoyer dans la vue l'objet $delivery. Le contrôleur est là pour récupérer les informations nécessaires (en base notamment) et les architecturer en tableau/objet/valeur pour les envoyer à la vue HTML qui pourra retranscrire ces valeurs via le moteur de template smarty. On voit bien ici que le code que tu as copié contient une variable $delivery (qui est en fait un objet, on le voit aux appels fait depuis cette variable $delivery->...). Il faut donc dans le contrôleur du module générer cet objet comme il l'est dans le contrôleur initial (celui des commandes) et l'assigner via smarty pour le récupérer dans ta vue. A tout hasard (je ne pratique plus vraiment Prestashop donc il faut prendre ce que je dis avec méfiance ) essaies dans ton contrôleur de récupérer l'adresse de cette façon: $delivery = new Address((int)$this->context->cart->id_address_delivery); Puis d'assigner à la vue: $this->context->smarty->assign('delivery', $delivery); Attention, ce que tu dois regarder, c'est quelles données tu possèdes dans ton contexte. En effet, ici cela implique qu'un panier soit présent dans le contexte et enrichi d'un id_address_delivery. Je ne sais pas dans quel contexte ton module évolue...
  21. De mémoire... Commences par regarder dans ton tableau si tu ne reçois pas une variable notée: price_tax_incl Si tu ne l'as pas, je pense que la méthode statique de la classe Product getPriceStatic() devrait faire l'affaire: Si l'ID de ton produit s'appelle $IdProduct alors : $PrixSansTva = Product::getPriceStatic($IdProduct, false, null, 2); $PrixAvecTva = Product::getPriceStatic($IdProduct, true, null, 2); Il te reste à mettre cela dans ton tableau smarty des produits et c'est bon.
  22. MySql est assez capricieux des fois, mais un coup de raquette n'arrangera rien Non MySql permet de définir des types de champs (par exemple ici un VARCHAR pour chaîne de caractères) mais il n'est pas capable d'aller plus loin. Pour lui, une chaîne de caractères est une chaîne de caractères. Il peut faire des opérations a posteriori dessus (comme indiqué plus haut) mais il n'est pas capable de modifier de façon aussi complexe la chaîne à l'entrée. Donc ça revient à faire ce que j'ai dis en premier: - Commencer par faire la modification en PHP pour faire en sorte que toute nouvelle commande applique la bonne casse. - Faire un update de masse comme indiqué plus haut pour faire en sorte que les anciennes données soient mises à niveau.
  23. Attention $id_order et $order->id n'est pas la même chose... Manifestement, dans le script, en amont est défini une variable $id_order qui est un entier définissant l'ID de la commande. $order->id est un appel à la valeur de la variable id dans l'instance en cours de l'objet Order. Ici, manifestement l'objet $order n'est pas défini Vu que par contre tu as bien l'id via $id_order, tu peux très bien faire au départ de ton script une nouvelle instance de ta classe Order : $order = new Order($order_id); Et à ce moment, $order sera un objet possédant toutes les valeurs de la commande et notamment bien sûr sont ID. Et à ce moment $order->is existera bien. Faire simplement var_export($order) pour voir ce qu'il y a dans ton objet
  24. Ben dans ce cas c'est sûrement que $order->id est vide non ? Fais-tu un var_export de ton objet $order pour voir si il est bien rempli ?
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More