THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Toujours dans mon apprentissage de développent de module, je tente d'afficher un peu de html dans le frontoffice via une url définie dans un controller.

En gros, j'ai :
thelia-test\thelia1\local\modules\ArtabanMPTTest1SellerShop\Config\routing.xml
...
    <route id="my_route_template_test_1" path="/my/route/name/templatetest1">
        <default key="_controller">ArtabanMPTTest1SellerShop\Controller\MainController::templateTEST1View</default>
    </route>
....
thelia-test\thelia1\local\modules\ArtabanMPTTest1SellerShop\Controller\MainController.php :
...
    public function templateTEST1ViewAction()
    {
        return $this->render("maVueTest1.html");
    }
...

thelia-test\thelia1\local\modules\ArtabanMPTTest1SellerShop\templates\frontOffice\default\maVueTest1.html :
<div class="panel">
    <div class="panel-heading">
        TEST1 VUE
    </div>
    <div class="panel-body">
        <p>Mon petit texte</p>
    </div>
</div>

Sur l'url : http://localhost/thelia-test/thelia1/web/my/route/name/templatetest1, J'obtiens comme erreur :

Le message d'erreur suivant a été trouvé : Controller "ArtabanMPTTest1SellerShop\Controller\MainController::templateTEST1View" for URI "/my/route/name/templatetest1" is not callable.

Comment corriger cela ?

Merci d'avance !

Offline


Utilise plutôt : <default key="_controller">ArtabanMPTTest1SellerShop\Controller\MainController::templateTEST1ViewAction</default>


OpenStudio Toulouse

Offline


Merci.
Problème résolu.

Pourquoi mettre action à la fin de la méthode dans un controller ? Pour le distinsguer d'autres méthodes dans le controller.
Si oui, quelles sont les autres types de méthodes que l'on peut mettre ?

Offline


Il n'y a pas d'obligation de suffixer la méthode par "Action". Tu peux l'appeler comme tu veux, et la référencer dans le fichier routing.xml

Ceci dit, si tu respectes des conventions de nommage en suffixant la classe de ton contrôleur par "Controller" et le nom de ta méthode par "Action", tu peux utiliser une notation abrégée dans routing.xml :

<default key="_controller">ArtabanMPTTest1SellerShop:Controller:Main:templateTEST1View</default>

Cf. https://symfony.com/doc/2.8/routing.htm … g-examples


OpenStudio Toulouse