Bonjour tout le monde !

Aujourd'hui petit blocage là ou je ne m'y atttentais pas !
En effet, je n'arrive pas à utiliser le Html helper dans un controller sur cakephp 3.

Sur la version 2 cela ne posait pas de problème. Pour le charger on pouvait faire :

    $view = new View($this);
    $html = $view->loadHelper('Html');

Et pour l'utiliser :

    $html->link()

Je n'ai pas trouvé d'éléments satisfaisant dans la doc à ce sujet ... Quelqu'un aurait-il la solution pour faire la même chose avec la dernière version de Cake ?

6 réponses


Xeta
Réponse acceptée
use Cake\Routing\Router;

$url = Router::url(['controller' => 'controller', 'action' => 'action']);
// echo $url => /controller/action

http://book.cakephp.org/3.0/en/development/routing.html#generating-urls

Un exemple d'utilisation dans une application : https://github.com/Xety/Xeta/blob/master/src/Controller/BlogController.php#L285

Comme ceci ?

<?= $this->Html->link('Mon lien',['controller'=>'Moncontroller','action'=>'monaction']); ?>

Bonjour,

Pourquoi vouloir charger un Helper dans un Controller ?

Je suis sur qu'il y a mieux comme solution, et surtout une qui respecte la structure MVC.

Oui effectivement, c'est un peu foinfoin je l'avoue. Mais pour l'instant je n'ai pas mieux en stock ...

Je bosse sur un site collaboratif dans lequel il y a, entre autre, une messagerie interne.
On s'en sert pour envoyer et recevoir des MP mais on reçoit aussi des alertes qui sont générées automatiquement après certaines actions de l'utilisateur.

Ce que je fais pour l'instant, c'est que j'enregistre à la volée le contenu des messages dans mon controller.
Certaines alertes contiennent des liens que j'aimerais faire générer par un helper, d'où ma question !

Si tu as une autre solution, ça peut aussi être pas mal !

DubleYu, ta proposition marchera très bien dans une vue.
Cependant, l'idée c'était de le faire dans le controller, auquel cas ta solution ne fonctionnera pas.

Mon message précédent t'aidera sans doute mieux comprendre ce que je veux faire :D

Héhé bien joué Xeta ! Ca fonctionne !
Merci beaucoup !