jd440 Posted April 24, 2016 Share Posted April 24, 2016 Bonjour à tous, je développe un module pour moi dans lequel j'assigne $smarty->assign(array( […] 'metasocial_image'=> $metasocial_image, ou $metasocial_image est un tableau mais le souci est que j'ai un problème lors de la mise en cache PHP Notice: Array to string conversion je sais que ce n'est qu'une notice' mais je me demande si ca ne pose pas un problème sur la mise en cache. un gentil dev passant dans le coin pourrais t il me dire si ca pose un problème et comment y remédier? Link to comment Share on other sites More sharing options...
Eolia Posted April 24, 2016 Share Posted April 24, 2016 Ben rien à voir avec le cache, si vous avez cette notice c'est que vous tentez d'afficher un tableau directement, ce qui est impossible (à moins d'utiliser print() ou var_dump() ) Donc votre tpl doit avoir un bug {$metasocial_image} donnera une erreur {$metasocial_image.image} pourrais fonctionner si image est un index du tableau et possède une donnée affichable 1 Link to comment Share on other sites More sharing options...
jd440 Posted April 24, 2016 Author Share Posted April 24, 2016 merci mais les log me signale le pb sur le cache PHP Notice: Array to string conversion in […].file.metasocial.tpl.cache.php on line 55 <?php }?><?php if (($_smarty_tpl->tpl_vars['metasocial_image']->value)) {?><meta name="twitter:image" content="<?php echo $_smarty_tpl->tpl_vars['metasocial_image']->value;?> à l'affichage j'utilise un foreach {if ($metasocial_image)}{foreach from=$metasocial_image item=foo}<meta property="og:image" content="{$foo}" />{/foreach}{/if} Link to comment Share on other sites More sharing options...
Eolia Posted April 24, 2016 Share Posted April 24, 2016 Curieux... par contre je vois dans votre signature que vous utilisez PHP7 qui est incompatible avec Prestashop à l'heure actuelle 1 Link to comment Share on other sites More sharing options...
J. Danse Posted April 24, 2016 Share Posted April 24, 2016 {if isset($metasocial_image)}{foreach from=$metasocial_image item=foo}<meta property="og:image" content="{$foo}" />{/foreach}{/if} Serait sans nuls doutes plus juste et devrait moins poser problème. Le cache, c'est juste pour dire que c'est le fichier template mis en cache. C'est bien sur le tpl, sinon. 1 Link to comment Share on other sites More sharing options...
jd440 Posted April 25, 2016 Author Share Posted April 25, 2016 merci à vous 2. Le problème venait effectivement du tpl. Il me restait affichage de $metasocial_image non traité en array P.S: au sujet de php7 je l'utilise qu'en dev. prévoyant de passer les serveurs de prod d'ici guelque semaine. et je n'ai aucun soucis majeur Link to comment Share on other sites More sharing options...
Eolia Posted April 25, 2016 Share Posted April 25, 2016 (edited) En regardant l'erreur de plus près je constate que la ligne incriminée ne correspond pas à celle du foreach: meta name="twitter:image" n'existe pas dans votre boucle tpl De plus Smarty a raison de claquer une erreur <?php if (($_smarty_tpl->tpl_vars['metasocial_image']->value)) {?><meta name="twitter:image" content="<?php echo $_smarty_tpl->tpl_vars['metasocial_image']->value;?> Correspondrait au code tpl suivant: {if ($metasocial_image)}<meta name="twitter:image" content="{$metasocial_image}" />{/if} Donc, regardez du coté du bloc qui traite de Twitter plutôt que de celui qui traite de FB... PS: Faites comme vous voulez pour PHP7, mais si je vous le dis c'est que les problèmes existent et que vous serez obligé de réécrire toutes les lignes utilisant des statiques se référant à des variables. Vous n'avez certainement pas encore fait tourner ces lignes dans vos tests, mais il y en a plus d'une trentaine dans le code... Edited April 25, 2016 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
jd440 Posted April 25, 2016 Author Share Posted April 25, 2016 (edited) effectivement $metasocial_image est utilisé 2 fois et je ne regardais par la bonne. PS: Pour PHP7, je vous crois! on parle bien sur la 1.6.1.4? Vous faite référence à ce genre de correctif ? - if (!Validate::$function($value)) { + if (!Validate::{$function}($value)) { ?? prestashop annoncait 1.6.1.4 Here are the changes that 1.6.1.4 brings: PHP 7 is now fully supported http://build.prestashop.com/news/prestashop-1614-maintenance-release/ L'erreur vient il de me signature qui indiquait la 1.6.0.9??? Edited April 25, 2016 by jd440 (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted April 25, 2016 Share Posted April 25, 2016 Exactement, mais ce genre de correctif (d'ailleurs il en manque beaucoup dens le PR) n'a jamais été mergé dans les versions 1.6. J'ai l'archive 1.6.1.4 sous les yeux et le code d'origine est toujours là. Idem dans celle de la 1.6.1.5, ligne 511 de /classes/AdminTab.php par exemple: if (!Validate::$function($value)) { Link to comment Share on other sites More sharing options...
jd440 Posted April 25, 2016 Author Share Posted April 25, 2016 j'avais aussi checker et remarqué que c'etait pas mergé!? ce matin suite à ton message donc tu dis que prestashop annonce "PHP 7 is now fully supported" mais en faite non? Link to comment Share on other sites More sharing options...
Eolia Posted April 25, 2016 Share Posted April 25, 2016 Lol, les annonces et changelogs de Prestashop sont aussi fiables que le mot "stable" ajouté sur les versions 2 Link to comment Share on other sites More sharing options...
doekia Posted April 25, 2016 Share Posted April 25, 2016 (edited) La méthode bullshit marketing classique de PrestaShop. 1/ On annonce c'est total compatible avec X,Y ou Z et que c'est stable 2/ Les utilisateurs plantent leurs shops, viennent sur le forum demander de l'aide. 3/ La communauté les dépanne, et si vraiment au bon de 6/8 mois ils n'ont toujours pas fait de PR on va peut-être envisager de regarder comment ils ont corrigé pour s'en inquiéter, on Google une solution à 2balles, on la commit. 4/ Comme ils (les dépanneurs) n'ont pas joué le jeu on va bien leur en faire l'allusion. 5/ On se glorifie du nouveau code (plus mieux, plus rapide, plus climax) dans une autre annonce type "dieux du code" et retour en 1 PS: Si ils font un PR en 3 on va bien le laisser pourrir, leur demander de le refaire tous les 3/4 mois sur la dernière branche - ils abandonneront après +/- 2ans et demi Edited April 25, 2016 by doekia (see edit history) 1 Link to comment Share on other sites More sharing options...
jd440 Posted April 25, 2016 Author Share Posted April 25, 2016 surprenant!? ces pb ont été remontés et corrigé dans git, notés comme merged l'été dernier donc bien avant la sortie de 1.6.1.4 pourtant rien et aujourd'hui PS dis que 1.6 n'est plus la priorité? https://github.com/PrestaShop/PrestaShop/pull/5480#issuecomment-214287819 Link to comment Share on other sites More sharing options...
Eolia Posted April 25, 2016 Share Posted April 25, 2016 Rien de nouveau sous le soleil^^ Certains PR remontent à 2012 (1.5) et quand on a demandé il y a un an pourquoi ils étaient toujours en "pending" on nous a répondu que la 1.5 n'était plus suivie. Pourtant le code n'a pas changé pour ceux-ci. On nous demande alors de refaire un PR dans la nouvelle version, de le retester et ça repart en "Pending" Forcément, au bout d'un moment, ça lasse... 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