Sensioframeworkextrabundle: isOptional в аннотации @ParamConverter, переопределенной в ParamConverterListener

Созданный на 21 сент. 2012  ·  3Комментарии  ·  Источник: sensiolabs/SensioFrameworkExtraBundle

Привет,

Я определил 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 .

Все 3 Комментарий

Это возможно, это необязательно, если параметр в методе определен со значением типа 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 не используются в контексте определяемого вами маршрута. Они выполняются независимо

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

maff picture maff  ·  4Комментарии

javiereguiluz picture javiereguiluz  ·  5Комментарии

128keaton picture 128keaton  ·  28Комментарии

mattjanssen picture mattjanssen  ·  5Комментарии

kevinpapst picture kevinpapst  ·  6Комментарии