Я работаю над проектом Symfony.Он имеет настраиваемые элементы управления доступом (которые динамически создаются и хранятся в базе данных). Поэтому я создал собственный класс BaseController, который позволяет мне выполнять однострочный вызов для проверки доступа.Вот часть этого кода:
class BaseController extends AbstractController
{
function prepare($customer, $product, $right) {
// These are all defined in the class.
$this->loadCompany($customer);
$this->canAccessProduct($product);
$this->checkAccessRights($customer, $product, $right);
}
}
Метод prepare вызывается в верхней части каждого контроллера.Например:
class IndexController extends BaseController {
/**
* @Route("/{customer}/download",
* name="download_home")
*/
function customerIndex($customer)
{
$this->prepare($customer, "download", "read");
}
}
Теперь вот изменение, которое я хочу сделать: я хочу удалить {customer} из маршрута и вместо этого загрузить его как часть вызова функции "prepare".Поэтому я хочу сохранить клиента в переменной сеанса.Если переменная сеанса не установлена, я хочу перенаправить на другой контроллер.Это достигается в Symfony с помощью return $this->redirectToRoute("app_company_select")
.Так можно ли настроить его так, чтобы в $this->prepare()
был возвращен вызов, который также возвращает функцию контроллера?
Я попытался parent::return()
, но это дает неизвестную ошибку функции.Есть ли другой способ сделать это?