Как работать с массивами полевых скобок в Symfony REST API - PullRequest
0 голосов
/ 23 декабря 2018

Я настраиваю REST API с использованием Symfony 3, и я не могу получить значения массива, отправленные через форму, причем последнее рассматривается как не отправленное в моем контроллере.

Вариант использования:отправить массив ключевых слов через форму POST в конечную точку / media / Keywords.Затем конечная точка сможет получить каждое ключевое слово и AC соответственно.Здесь нет сущности Doctrine.

Мое действие следующее:

/**
 * @Post(
 *    path = "/media/keywords",
 *    name = "app_media_keywords_update"
 * )
 * @View(StatusCode = 200)
 * @RequestParam(name="keywords")
 */
public function keywordsAction(Request $request)
{
    $form = $this->createFormBuilder()
        ->add('keywords', TextType::class)
        ->getForm();
    $form->handleRequest($request);

    echo "issub=".$form->isSubmitted()."<br>";
    echo "isValid=".$form->isValid()."<br>";

    die();
}

вывод следующий:

issub=
<br>isValid=
<br>

Для целей тестирования:Я использую Почтальон для имитации отправки POST следующим образом:

Adding the keywords using POSTMAN

Я не понимаю, почему форма считается не отправленной.Нужно ли что-то еще?Является ли мой вызов createFormBuilde () неправильным (в частности, в отношении типа, не являющегося массивом, а только TextType)?

1 Ответ

0 голосов
/ 23 декабря 2018

Когда вы проходите несколько пунктов через keywords, вы должны использовать CollectionType:

$form = $this->createFormBuilder()
    ->add('keywords', CollectionType::class, [
        'entry_type' => TextType::class
    ])
    ->getForm();
$form->handleRequest($request);

echo "issub=".$form->isSubmitted()."<br>";
echo "isValid=".$form->isValid()."<br>";

// also get form submit errors, for example:
if (!$form->isValid()) {
    print_r($form->getErrors(true));
}

Руководство по ошибкам формы здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...