我正在使用Symfony 3设置REST API,但无法通过表单发送数组值,后者被视为未在控制器中提交。
用例是通过POST表单将关键字数组发送到/ media / keywords端点。然后,端点将能够获取每个关键字和相应的ac。这里没有教义实体。
我的动作如下:
/**
* @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>
出于测试目的,我使用Postman模拟POST提交,如下所示:
我不明白为什么表单被视为未提交。还需要其他东西吗?我对createFormBuilde()的调用是否正确(特别是关于类型,不是数组,只有TextType)?
答案 0 :(得分:0)
通过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));
}
表格错误手册为here。