Привет,
Я определил ParamConverter (использование DoctrineParamConverter), такой
@ParamConverter("myparam", class="MyBundle:MyEntity", isOptional="true", options={"id" = "param_id"})
но «необязательный» флаг переопределяется в ParamConverterListener в строке
$configurations[$name]->setIsOptional($param->isOptional());
который находится вне блока
если (!isset($configurations[$name])) {
...
}
поэтому невозможно определить необязательный параметр с помощью DoctrineParamConverter.
Спасибо за ваш отзыв.
С наилучшими пожеланиями,
Кристоф
Это возможно, это необязательно, если параметр в методе определен со значением типа User $user = null
.
@henrikbjorn
Если вы используете мультимаршрут для одного метода на контроллере, «Использовать $user = null» не работает
Например, проверьте этот код
/**
* @Route("/customer/{id}/message/{type}/create", name="fisan_frontend_message_create")
* @ParamConverter("Customer", class="\qwe\Entity\Customer", options={"id" = "id"}, isOptional="true")
*
* @Route("/creditor/{id}/message/{type}/create", name="fisan_frontend_message_create_creditor")
* @ParamConverter("Creditor", class="\qwe\Entity\Creditor", options={"id" = "id"}, isOptional="true")
*
* @Method({"POST"})
*
* <strong i="8">@param</strong> Request $request
* <strong i="9">@param</strong> Customer $customer
* <strong i="10">@param</strong> Creditor $creditor
* <strong i="11">@param</strong> string $type
*
* <strong i="12">@return</strong> JsonResponse
*/
public function createAction(Request $request, \Fisan\Entity\Customer $customer = null, \Fisan\Entity\Creditor $creditor = null, $id, $type = MessageTypeChoiceList::EMAIL)
{
}
Для второго маршрута вы получаете ошибку 404 из-за результата работы paramconverter для первого ParamConverter
ParamConverters не используются в контексте определяемого вами маршрута. Они выполняются независимо
Самый полезный комментарий
Это возможно, это необязательно, если параметр в методе определен со значением типа
User $user = null
.