J'ai besoin d'accéder à une méthode à partir d'un autre contrôleur à l'intérieur d'un autre contrôleur. Comment puis-je le faire? Puis-je utiliser this->get
méthode?
Puis-je inclure le contrôleur dans mon contrôleur actuel et en faire un objet et accéder à la méthode via l'objet? Est-ce "ok" de le faire de cette façon?
Je veux appeler la méthode de formulaire --- newAction de l'autre contrôleur.
Vous pouvez définir votre contrôleur comme service, puis le récupérer dans un autre contrôleur.
Dans votre services.yml
définir le contrôleur nécessaire en tant que service:
services:
your_service_name:
class: YourCompany\YourBundle\Controller\YourController
Ensuite, dans n'importe quel contrôleur, vous pourrez obtenir ce service via un conteneur:
$yourController = $this->get('your_service_name');
Il y a quelques informations utiles sur Contrôleurs en tant que services dans la documentation
Si vous ne voulez pas définir la classe comme un service, car cela ne me semble pas être une bonne pratique et @Qoop l'a cité Fabien dit la même chose , vous pouvez utiliser le transfert:
http://symfony.com/doc/current/controller/forwarding.html
public function indexAction($name)
{
$response = $this->forward('AcmeHelloBundle:Hello:fancy', array(
'name' => $name,
'color' => 'green',
));
// ... further modify the response or return it directly
return $response;
}
Si vous avez besoin d'incorporer la sortie d'une action de contrôleur interne dans un modèle, la documentation pour Symfony a également quelque chose pour cela.