MVC & besoin d'appeler une fonction dans la vue (générer URL)
Bonjour à tous,
Je sollicite votre aide concernant un problème que je rencontre, sur mon application MVC.
J'ai implémenté récemment des composants issus de Symfony pour me simplifier la tâche, notamment le routing et les annotations Doctrine.
Cela me permet de gérer les routes plus simplement grâce aux annotations comme dans Symfony, exemple :
Code:
1 2 3 4 5 6 7 8 9 10
| /**
* @Route({"/home", "/"}, name="home")
*/
public function home($ajax = false)
{
$nb_infos = $this->InfoTable->count();
$nb_utilisateurs = $this->UserTable->count();
$this->render("VueIndex", compact('nb_infos', 'nb_utilisateurs'));
} |
Jusqu'ici aucun soucis, en accédant à l'url http://url.com/home, c'est la bonne action qui est appelée et la page s'affiche.
Cependant j'aurai aimé profiter aussi de la génération d'URL de manière dynamique, pour arrêter d'écrire des liens manuellement dans mes vues, en remplaçant :
<a href="/home">lien</a> par (exemple) <a href="<?= path('home'); ?>">lien</a>.
Malheureusement si je créé une fonction "path" dans une de mes classes, la vue est incapable de l'appeler et je me retrouve avec une erreur du type :
Citation:
Fatal error: Uncaught Error: Call to undefined function path()
Et je sais aussi qu'une Vue n'est pas censée appeler un controleur ou un service... (twig le gère très bien dans symfony et on ne s'en soucie pas mais là c'est différent).
C'est pourquoi toute remarque est la bienvenue, j'aimerai respecter au mieux les bonnes pratiques. Je sais que ma question est un peu vague donc n'hésitez si vous avez des suggestions :mrgreen:
Merci d'avance !
Voici en bonus la méthode qui me permet d'afficher une Vue (qui se trouve dans mon fichier AppController.php) :
Code:
1 2 3 4 5 6
| protected function render($view, $variables = [])
{
extract($variables);
require($_ENV['APP_DIR'] . "/Vues/" . $view . ".php");
} |