Bonjour,
Je tente depuis plusieurs jours de développer un module pour la préparation de commande. Je suis sous la version 1.7.5 et je code selon les nouvelles recommandations de PrestaShop pour la 1.7, donc avec Symfony. J'ai essayé de régler toutes mes erreurs tout seul, mais je ne trouve pas la cause de celle-ci.
A l'installation, mon module ajoute un onglet dans les paramètres de commande. Seulement voilà, j'ai le résultat suivant quand je clique sur l'onglet :
Pourtant, j'ai suivi cette documentation à la lettre : https://devdocs.prestashop.com/1.7/modules/concepts/controllers/admin-controllers/
Voici mon code pour l'onglet, dans le fichier principal orderpreparation.php :
private function installTab(): bool { $tabId = (int) Tab::getIdFromClassName('AdminOrderPreparation'); if (!$tabId) { $tabId = null; } $tab = new Tab($tabId); $tab->active = 1; $tab->class_name = 'AdminOrderPreparation'; //$tab->route_name = 'admin_order_preparation'; $tab->name = array(); foreach (Language::getLanguages() as $lang) { $tab->name[$lang['id_lang']] = $this->trans('Order Preparation', array(), 'Modules.Orderpreparation.Admin', $lang['locale']); } $tab->id_parent = (int) Tab::getIdFromClassName('AdminParentOrders'); $tab->module = $this->name; return (bool) $tab->save(); } private function uninstallTab() { $tabId = (int) Tab::getIdFromClassName('AdminOrderPreparation'); if (!$tabId) { return true; } $tab = new Tab($tabId); return $tab->delete(); }
Le code de mon contrôleur :
declare(strict_types=1); namespace Kaudaj\Module\OrderPreparation\Controller\Admin; use Doctrine\Common\Cache\CacheProvider; use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController; use PrestaShopBundle\Security\Annotation\AdminSecurity; use Kaudaj\Module\OrderPreparation\Model\PreparationLine; use Kaudaj\Module\OrderPreparation\Repository\PreparationLineRepository; class AdminOrderPreparationController extends FrameworkBundleAdminController { private $cache; private $form_filename; /** * @var PreparationLinesRepository */ private $repository; public function __construct(CacheProvider $cache) { $this->cache = $cache; $this->repository = new PreparationLineRepository(); $this->form_filename = _PS_MODULE_DIR_ . $this->module->name . DIRECTORY_SEPARATOR . "orderpreparationform.html"; parent::__construct(); } /** * @AdminSecurity( * "is_granted('read', request.get('_legacy_controller'))", * message="You do not have permission to update this." * ) * * @return Response */ public function indexAction() { return $this->render( '@Modules/orderpreparation/views/templates/admin/orderpreparation.html.twig', array( "ajax_dl_link" => $this->context->link->getAdminLink($this->module->name) ) ); } }
Mon routes.yml :
admin_order_preparation: path: /order-preparation methods: [GET] defaults: _controller: 'Kaudaj\Module\OrderPreparation\Controller\Admin\AdminOrderPreparationController::indexAction'
Ainsi que mon composer.json :
{ "name": "kaudaj/order-preparation", "description": "Kaudaj - Order Preparation", "autoload": { "psr-4": { "Kaudaj\\Module\\OrderPreparation\\": "src/" }, "config": { "prepend-autoloader": false }, "type": "prestashop-module" } }
Si vous avez besoin de plus d'informations sur le contexte ou de code que je n'ai pas publié, n'hésitez pas à me le demander.
Merci d'avance pour votre aide !