验证表单失败但没有给出错误

Validating a form fails but gives no errors

我正在尝试在 Symfony3 中创建一个没有 class 的表单。不幸的是,虽然验证失败但根本没有给我任何消息 - 只是一个空字符串。

public function postCollectionAction(Request $request)
{
    $data = json_decode($request->getContent(), true);

    $options = ["csrf_protection" => false];

    $form = $this->createFormBuilder([], $options)
        ->add('elements', CollectionType::class,
            [
                'entry_type'   => MyClassType::class, //this should be form type
                'allow_add' => true, // this needs to be true
            ]
        )
        ->getForm();

        $form->submit($data); // This was the main problem - form did not get submitted

    $form->handleRequest($request);

    if ($form->isValid()) {
        die("ok");
    }
    else
    {
        var_dump((string)$form->getErrors(true, false));
        die("not ok");
    }
}

我正在尝试验证的 class 看起来像这样

use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Table
 */
class MyClass
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255, unique=true)
     * @Assert\NotBlank()
     */
    private $name;
}

这就是我发送的内容

{
    "elements": [{
        "name": "My element name"
    }]
}

我想我错过了显而易见的东西。有人可以帮我完成这项工作吗?

更新 根据 Alvin Bunk 建议编辑了代码

你创建那个表格的方式看起来很奇怪,但我理解它(而且它可能?行得通......),但试试这个怎么样:

$form = $this->createFormBuilder(null, $options)
    ->add('elements', CollectionType::class, array(
            'entry_type'   => MyClass::class,
    ))
    ->getForm();

试一试,看看会发生什么。 您是否也尝试了 'app_dev.php' URL 以查看它是否显示更多信息?

编辑 #2...

我认为你的 JSON 是错误的。 应该是这样的:

{
    "elements": {
        "name": "My element name"
    }
}