Jump to content

Overrider un controller de PrestashopBundle depuis un module


Recommended Posts

Bonjour, 

je souhaite overrider le controller

\src\PrestaShopBundle\Controller\Admin\Improve\Design\ThemeController 

pour créer moi même la fonction export (exportAction) et ne pas utiliser la fonction de base.

J'ai créé un module et il faut que l'override se fasse dans ce module. Comment puis-je faire cela ?

J'ai fait un test en ajoutant dans services.yml quelque chose du genre :

CustomController:
    class: PrestaShop\Module\MonModule\Controller\Admin\CustomThemeController
    decorates: PrestaShopBundle\Controller\Admin\Improve\Design\ThemeController
    arguments: ['@CustomController.inner']

Et mon controller est comme ceci :

namespace PrestaShop\Module\MonModule\Controller;

use Exception;
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use Symfony\Component\HttpFoundation\Response;

class AdminMonModuleCustomThemeController extends FrameworkBundleAdminController
{
    public function exportAction(): Response
    {
        return 'blablabla';
    }
}

Je ne sais pas si c'est bien ou pas (si ça peut répondre à mon besoin)  mais j'ai une erreur :

Attempted to load class "CustomThemeController" from namespace "PrestaShop\Module\MonModule\Controller\Admin".
Did you forget a "use" statement for another namespace?

Si vous avez une idée ou une meilleure façon de faire. Une façon plus simple également si c'est possible.

Merci.

Link to comment
Share on other sites

Bonjour, alors j'ai fini par trouver la solution et le souci venait de entre la chaise et le clavier.
Le module est juste une coquille vide, j'avais seulement besoin de faire ce que j'ai dit, intercepter une route pour l'empêcher de fonctionner avec son comportement normal.
Le controller est dans src/Controller.
Pour ceux qui aurait fait (ou qui feront) la même erreur que moi je me suis juste trompé dans le nom du controller dans le use et le services.yml. J'ai également du faire un composer update -o.
Avec le bon nom de fichier ça donne :
 

CustomExportThemeController:
    class: PrestaShop\Module\MonModule\Controller\AdminMonModuleCustomThemeController
    decorates: PrestaShopBundle\Controller\Admin\Improve\Design\ThemeController
    arguments: ['@CustomExportThemeController.inner']

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...