2014-10-26 3 views
3

Я хотел бы использовать метод контроллера из другого пула в моем контроллере.Symfony 2 - Контроллер вызова с другого контроллера

Метод this-> forward нужен объект Response, и я не знаю, как его использовать.

И я увидел, что могу использовать сервис, но я хочу знать, является ли его лучшим решением, или они являются другим.

ответ

4

$this->forward принимает аргументы в следующем порядке:

  1. логическое имя действия контроллера в формате строки, т.е. «AcmeHelloBundle: Привет: фантазии»
  2. Параметры, передаваемые в качестве переменных запроса в массиве формата, т.е. массив ( 'имя' => $ имя, 'цвет' => 'зеленый', )

Эти параметры могут быть доступны в контроллере с использованием функции доступа к запросу.

2

Иногда вы хотите полностью обходить безопасность и выполнять команду в другом контроллере, несмотря на уровень разрешений пользователя. К счастью, вы можете сделать это довольно легко.

Во-первых, запустить использовать команду для контроллера в верхней части контроллера вы хотите использовать данные из:

use AppBundle\Controller\MySourceDataController; 

Затем вызовите эту функцию из контроллера назначения:

$response = MySourceDataController::getTheData($option1, $option2); 

Если вам нужно передать объект запроса, вы можете сделать это следующим образом:

$response = MySourceDataController::getTheData(new Request(array(
    'server' => 'USAServer1', 
)), $option2); 

Это возвращение s Запрос с заданным параметром сервера. Я также определил $ параметр2, это будет переменная часто определяется в URL, такие как:

* @Route("/mydata/{server}/", name="api-source-data") 
* @param Request $request 
* @param   $server 

Наконец, если вы передаете JSON в этом контроллере и хотите, чтобы преобразовать его обратно в объект, вы можете введите этот бит кода в ответ $:

if (0 === strpos($response->headers->get('Content-Type'), 'application/json')) { 
    $response = json_decode($response->getContent(), true); 
} 

Voila. Получите доступ к любому контроллеру из любого другого контроллера и обходной записи безопасности для контроллера источника. :)

+0

Чисто чисто? Это кажется мне естественным и хриплым. Я начинающий symfony, и я понятия не имею, могу ли я/использовать его в производстве. –

Смежные вопросы