THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour,

Je souhaite appeller le controller d'un module dans mon hook qui me permet de configurer mon module, j'arrive bien a render une view mais je voudrais au préalable executer une méthode de mon controller qui se trouve dans mon module.

<?php
/**
 * Created by PhpStorm.
 * User: AS DEV
 * Date: 2015-12-11
 * Time: 14:40
 */

namespace Tecdocbdd\Hook;

use Thelia\Core\Event\Hook\HookRenderEvent;
use Thelia\Core\Hook\BaseHook;

class BackHook extends BaseHook {
    public function onModuleConfiguration(HookRenderEvent $event)
    {
        $event->add($this->render("tecdocbdd-config.html"));
    }
}

Merci par avance pour votre aide.

Last edited by Shiness (16-12-2015 17:49:15)

Offline


Tu ne peux pas vraiment appeler une méthode de ton contrôleur dans un hook.

Le plus simple est d'extraire cette méthode de ton contrôleur pour la mettre dans une classe spécifique, ou dans un service. Tu pourras alors appeler cette méthode depuis ton contrôleur et depuis ton hook.


OpenStudio Toulouse

Offline


Merci pour ton aide.

Et si je procède ainsi ce n'est pas censé fonctionner ?

<?php
/**
 * Created by PhpStorm.
 * User: AS DEV
 * Date: 2015-12-11
 * Time: 14:40
 */

namespace Tecdocbdd\Hook;

use Thelia\Core\Event\Hook\HookRenderEvent;
use Thelia\Core\Hook\BaseHook;
use Tecdocbdd\Controller\TecdocController;

class BackHook extends BaseHook {
    public function onModuleConfiguration(HookRenderEvent $event)
    {
        $param = new TecdocController();
        $test = $param->getClientAction();
        $event->add($this->render("tecdocbdd-config.html"),['test' => $test]);
    }
}

Ce que je en comprend pas dans ma view 'tecdoc-config.html' quand je passe un paramètre ($test) je n'arrive pas à l'afficher dans la vue.

Offline


Non, ça ne fonctionnera pas, il va manquer le container à ton contrôleur.

Si tu ne vois pas $test dans ta vue, c'est qu'il est vide...


OpenStudio Toulouse

Offline


Ok merci je vais suivre donc ces pistes.

Pour le pb de $test c'était juste une erreur de frappe (une parenthèse mal placé, inattention quand tu nous tiens...), j'ai mis

$event->add($this->render("tecdocbdd-config.html"),['test' => $test]);

alors que c'est au niveau du render :

$event->add($this->render("tecdocbdd-config.html",['test' => $test]));

Last edited by Shiness (14-12-2015 17:45:27)