Не могу сделать мою форму действительной

Я хочу создать инфраструктуру ReST с сервером Symfony (используя FOSRestBundle). Там есть

  • объект Контакт (идентификатор, имя, адрес электронной почты)
  • форму AddType для добавления нового контакта

На стороне клиента у меня есть форма, которая отправляет запрос POST, тело которого

{"the_name_of_my contact_form": {"name": "foo", "email": "[email protected]"}}

Мой контроллер (который расширяет FOSRestController) может видеть данные в запросе

$ request-> request-> get ($ form-> getName ()) возвращает {"name": "foo", "email": "[email protected]"} < / сильный>

Но использую ли я $ form-> handleRequest ($ request) или $ form-> submit ($ data)

$ form-> isValid () всегда ложно

Надеюсь, это достаточно ясно ... может ли кто-нибудь помочь?


person Paul Dubois    schedule 12.01.2016    source источник
comment
Что возвращает $ form- ›getErrors ()?   -  person Richard    schedule 13.01.2016
comment
Возможно, отсутствует токен CSRF? (Никогда раньше не использовал FOSRestBundle, но если вы используете базовые формы Symfony, это может быть причиной отказа).   -  person ccKep    schedule 13.01.2016


Ответы (1)


Эта проблема связана с проверкой CRSF. Вы должны отключить его для пользователя, запрашивающего услугу. Вы можете отключить его в config.yml. Вам нужно будет установить что-то вроде этого:

fos_rest:
    disable_csrf_role: ROLE_API

Просто убедитесь, что эта роль принадлежит пользователю, запрашивающему вашу услугу. Подробнее о ролях пользователей можно узнать здесь.

Кроме того, вам придется отправить форму, а не обрабатывать ее. Вот его отрывок:

    $form = $this->createForm(ProjectType::class, $project);
    $form->submit($request->request->all());

    if ($form->isValid()) {
person Gardner    schedule 29.05.2016