Route de recherche dans symfony 2
J'ai défini un itinéraire dans mon application fichier de routage:
RouteName:
pattern: /some/route
defaults: { _controller: MyAppBundle:Controller:action }
Dans un contrôleur, je peux utiliser:
$this->get('router')->generate('RouteName');
Comment pourrais-je accéder simplement qu'à partir d'une nouvelle classe que j'ai créer, par exemple, une classe de vue qui ne s'étendent pas à quoi que ce soit:
namespace My\AppBundle\View;
class ViewClass {
public function uri()
{
return getTheRoute('RouteName');
}
}
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'injecter de "routeur" dans votre ViewClass. Par exemple. dans l'endroit où vos définir votre ViewClass service:
et puis dans votre constructeur:
L'indice est dans la façon dont le
$this->generateUrl()
méthode fonctionne dans les Contrôleurs. Voir:De sorte que vous aurez besoin de définir votre classe en tant que service et d'injecter de l' @routeur de service. Soit ça, ou avoir votre classe en œuvre ContainerAwareInterface, mais la première méthode serait certainement mieux.
Vous devez inscrire votre classe en tant que service et insérez le routeur en tant que dépendance.
Voir le le chapitre sur le conteneur de service dans l'excellent symfony2 docs.
Si vous n'êtes pas familier avec les concepts du conteneur de services et d'injection de dépendance, vous pourriez vous sentir un peu dépassés. Cependant, essayez de votre mieux pour le comprendre parce que c'est une partie essentielle de la symfony2 architecture.
Vous pouvez passer l'ensemble du conteneur à partir de votre contrôleur à votre classe vue sur l'instanciation. C'est PAS de MEILLEURE PRATIQUE et n'est pas recommandé.
Ensuite dans votre code, vous pouvez utiliser