验证表单失败但没有给出错误
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"
}
}
我正在尝试在 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"
}
}