Передача параметра Symfony4 @Route в конструкцию контроллера - PullRequest
0 голосов
/ 14 декабря 2018

Мне нужно передать параметр URL-маршрута в конструкцию, чтобы выполнить базовую проверку безопасности всех маршрутов для определенного класса, но я не знаю, как передать параметр маршрута в функцию конструкции контроллера

Упрощенный код следующим образом:

/**
 * @Route("/stores/{store_id}", name="admin_stores",
 */
class ManageStores extends AbstractController
{

    var $store;

    /**
     * ManageStores constructor.
     * @param $store_id
     * @param UserInterface $user
     */
    public function __construct($store_id, UserInterface $user)
    {

        // validation here using parsed
        if ( !$user->canManageStore( $store_id ) )
            return $this->redirectToRoute('login_page');

        // else: continues on to relevant routes in controller


    }

}

1 Ответ

0 голосов
/ 14 декабря 2018

Параметры маршрута передаются (через объект Request) действию контроллера, а не конструктору.Значения неизвестны при настройке и сборке контейнера.

Вам нужно будет проверить разрешение на доступ для каждого отдельного действия, хотя вы можете немного сократить это с помощью контроля доступа и избирателей (это немного продвинуто, но есть документация наих, и некоторые видео-обходы также доступны при их настройке).

...