Intereting Posts
В PHP как я рекурсивно удаляю все папки, которые не пусты? Рекурсивная функция PHP для отображения списка смежности Обновление ajax div с данными формы Ответ со статусом: 0 для URL – вероятный вопрос CORS – угловой запрос http get Попытка установить ssh2 на php Как подключить пользователя к файлу cookie для входа в PHP? mkdir () говорит, что нет такой директории и не удается? Вычисление средней точки в два раза Может ли кто-нибудь объяснить аргумент $ pty в вызове функции ssh2_exec () Как зарегистрировать пользователя на ejabbered, используя php-код Исключение исключения в обработчике исключений PHP Циклические данные, когда форма имеет разные атрибуты имени каждой строки Как избежать написания уведомлений и предупреждений php в файлах журналов? Доступ к выходу хранимой процедуры MySQL в Zend Framework 2 Являются ли имена функций PHP чувствительными к регистру или нет?

Как получить доступ к другому контроллеру изнутри контроллера Symfony2

Мне нужно получить доступ к методу с другого контроллера внутри другого контроллера. Как мне это сделать? Могу ли я использовать метод this->get ?

Можно ли включить контроллер в мой текущий контроллер и сделать его объектом и получить доступ к этому методу через объект? Это нормально?

Я хочу вызвать метод формы — newAction другого контроллера.

Вы можете определить свой контроллер как службу, а затем получить его на другом контроллере.

В your services.yml определите необходимый контроллер как услугу:

 services: your_service_name: class: YourCompany\YourBundle\Controller\YourController 

Затем в любом контроллере вы сможете получить эту услугу через контейнер:

 $yourController = $this->get('your_service_name'); 

Существует некоторая полезная информация о контроллерах как услуги в документации

Если вы не хотите определять класс как услугу, поскольку он не считает меня хорошей практикой, а @Qoop цитирует Фабьена, говорящего то же самое , вы можете использовать переадресацию:

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; } 

Если вам нужно встроить вывод внутреннего контроллера в шаблон, в документации для Symfony также есть что-то для этого.