{"id":1513,"date":"2017-04-11T13:49:49","date_gmt":"2017-04-11T11:49:49","guid":{"rendered":"https:\/\/www.h-hennes.fr\/blog\/?p=1513"},"modified":"2018-11-22T18:13:34","modified_gmt":"2018-11-22T16:13:34","slug":"prestashop-1-7-correction-bug-traduction-dans-controller-admin-dun-module","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2017\/04\/11\/prestashop-1-7-correction-bug-traduction-dans-controller-admin-dun-module\/","title":{"rendered":"Prestashop 1.7 : Correction bug traduction dans controller admin d&rsquo;un module"},"content":{"rendered":"<p>La derni\u00e8re version de Prestashop 1.7 apporte de nombreux changements ( j&rsquo; y reviendrais sans doute plus longuement dans un article \u00e0 venir ), et notamment dans la gestion des traductions dans l&rsquo;administration.<\/p>\n<p>Celle-ci se base \u00e0 pr\u00e9sent sur Symfony, tout en gardant quand m\u00eame une r\u00e9trocompatibilit\u00e9 (th\u00e9orique ) avec l&rsquo;ancien syst\u00e8me.<br \/>\nLes derni\u00e8res recommandations ( \u00e0 date ) de l&rsquo;\u00e9quipe Prestashop \u00e9taient de conserver l&rsquo;ancien syst\u00e8me de traduction pour les modules.<\/p>\n<p>Dans le cadre de l&rsquo;adaptation de l&rsquo;un de mes module j&rsquo;ai cependant fait face \u00e0 la probl\u00e9matique suivante , impossible d&rsquo;acc\u00e9der \u00e0 mon controller Admin, et affichage de la belle page d&rsquo;erreur suivante :<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-1516\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/erreur-traduction-prestashop-1024x280.jpg\" alt=\"Erreur traduction prestashop\" width=\"780\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/erreur-traduction-prestashop-1024x280.jpg 1024w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/erreur-traduction-prestashop-300x82.jpg 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/erreur-traduction-prestashop-768x210.jpg 768w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2017\/04\/erreur-traduction-prestashop.jpg 1052w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Apr\u00e8s analyse, du code erreur :<\/p>\n<p class=\"block_exception clear_fix\"><strong><span class=\"exception_title\"><abbr title=\"Symfony\\Component\\Debug\\Exception\\FatalErrorException\">FatalErrorException<\/abbr> in <a title=\"\/var\/www\/public\/public\/prestashop\/prestashop_1-7-1-0\/classes\/controller\/AdminController.php line 2735\">AdminController.php line 2735<\/a>:<\/span> <span class=\"exception_message\">Error: Call to a member function trans() on null<\/span><\/strong><\/p>\n<p>il s&rsquo;av\u00e8re que la fonction de traduction des modules ne marchait pas correctement dans mon cas et j&rsquo;ai du surcharger cette fonction dans mon controller.<\/p>\n<p>Voici donc le code qui a permis de faire fonctionner le module correctement<\/p>\n<pre lang=\"php\" escaped=\"true\">    \r\n \/**\r\n\u00a0\u00a0\u00a0\u00a0 * Surcharge de la fonction de traduction sur PS 1.7 et sup\u00e9rieur.\r\n\u00a0\u00a0\u00a0\u00a0 * La fonction globale ne fonctionne pas\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $string\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $class\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $addslashes\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $htmlentities\r\n\u00a0\u00a0\u00a0\u00a0 * @return type\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 protected function l($string, $class = null, $addslashes = false, $htmlentities = true)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ( _PS_VERSION_ &gt;= '1.7') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return Context::getContext()-&gt;getTranslator()-&gt;trans($string);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return parent::l($string, $class, $addslashes, $htmlentities);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n<\/pre>\n<p>Si vous avez aussi rencontr\u00e9 ce probl\u00e8me et trouv\u00e9 une autre solution n&rsquo;h\u00e9sitez pas \u00e0 la partager \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La derni\u00e8re version de Prestashop 1.7 apporte de nombreux changements ( j&rsquo; y reviendrais sans doute plus longuement dans un article \u00e0 venir ), et notamment dans la gestion des traductions dans l&rsquo;administration. Celle-ci se base \u00e0 pr\u00e9sent sur Symfony, tout en gardant quand m\u00eame une r\u00e9trocompatibilit\u00e9 (th\u00e9orique ) avec l&rsquo;ancien syst\u00e8me. Les derni\u00e8res recommandations [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[236,104,483],"class_list":["post-1513","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-module-prestashop","tag-prestashop","tag-prestashop-1-7","prestashop-1-7","prestashop-1-7-8","prestashop-8-1"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1513","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1513"}],"version-history":[{"count":3,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1513\/revisions"}],"predecessor-version":[{"id":1519,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1513\/revisions\/1519"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}