Согласованность маршрутов arg в symfony2

Я новичок в Symfony2, и мне просто интересно, должна ли согласованность args быть сделана сама в контроллере или есть механизм, о котором я не знаю

возьмем пример:

у меня есть маршрут, как /company / id / user/id, чтобы отобразить некоторую информацию для пользователя

я пытался вручную изменить идентификатор компании или пользователя, и нет никакой ошибки, если пользователь не из компании ?!

Должен ли я проверять контроллер displayUserAction, если пользователь и компания связаны ?

/**
 * @Route("/company/{company_id}/user/{site_id}")
 * @ParamConverter("company", class="MyModelCompany", options={"mapping": {"company_id": "id"}})
 * @ParamConverter("site", class="MyModelUser", options={"mapping": {"site_id": "id"}})
 */
public function displayUserAction(Company $company, User $user)
{
..
}

routing.yml
user_info:
path:     /company/{company_id}/user/{site_id}
defaults: { _controller: UserBundle:Default:displayUser } 

Редактировать:
Я нашел другой способ: карта с использованием нескольких критериев

/**
 * @Route("/company/{company_id}/user/{site_id}")
 * @ParamConverter("company", class="MyModelCompany", options={"mapping": {"company_id": "id"}})
 * @ParamConverter("site", class="MyModelUser", options={"mapping": {"site_id": "id", "company_id":"company"}})
 */
public function displayUserAction(Company $company, User $user)
{
..
}

1 ответ

  1. Вы можете переупорядочить аргументы в действии сколько угодно. Symfony достаточно умен, чтобы соответствовать аргументам — но вы должны сохранить имя несколько последовательным — что вы сделали в любом случае. Symfony будет соответствовать {company_id}в вашем маршруте $companyв вашем действии, например, независимо от того, в каком порядке вы их размещаете.

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

    В вашем действии вам нужно будет проверить принадлежность пользователя к компании. Архитектура маршрута и действия не заботятся о том, связаны ли эти 2 сущности, их заботит только то, что значение было предоставлено.