Jump to content

Edit History

Vintelec

Vintelec

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 :

image.png.bb858befa29cd7fa0b011af1d507834c.png

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 !

Vintelec

Vintelec

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 :

image.png.bb858befa29cd7fa0b011af1d507834c.png

Pourtant, j'ai suivi cette documentation à la lettre : https://www.prestashop.com/forums/forum/120-prestashop-pour-les-développeurs/

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 voulez plus d'informations sur le contexte ou du code que je n'ai pas publié, n'hésitez pas à me le demander.
Merci d'avance pour votre aide !

Vintelec

Vintelec

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 avec les nouvelles recommandations, 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 :

image.png.bb858befa29cd7fa0b011af1d507834c.png

Pourtant, j'ai suivi cette documentation à la lettre : https://www.prestashop.com/forums/forum/120-prestashop-pour-les-développeurs/

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'

admin_download_form:
  path: /order-preparation/download
  methods: [GET]
  defaults:
    _controller: 'Kaudaj\Module\OrderPreparation\Controller\Admin\AdminOrderPreparationController::downloadAction'

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 voulez plus d'informations sur le contexte ou du code que je n'ai pas publié, n'hésitez pas à me le demander.
Merci d'avance pour votre aide !

×
×
  • Create New...