Иногда вы хотите полностью обходить безопасность и выполнять команду в другом контроллере, несмотря на уровень разрешений пользователя. К счастью, вы можете сделать это довольно легко.
Во-первых, запустить использовать команду для контроллера в верхней части контроллера вы хотите использовать данные из:
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. Получите доступ к любому контроллеру из любого другого контроллера и обходной записи безопасности для контроллера источника. :)
Чисто чисто? Это кажется мне естественным и хриплым. Я начинающий symfony, и я понятия не имею, могу ли я/использовать его в производстве. –