Php 复制演示时出错“;在映射中不能定义序列项";
我在尝试复制Symfony提供的演示时出错。你可以在这里找到它 当我将表单包含在控制器中时,我可以让表单正常工作,但当我将表单设置为自己的类时,我最终会得到一个错误,上面写着 在映射中不能定义序列项 服务器错误-解析异常 日志返回: 严重-未捕获的PHP异常 Symfony\Component\Yaml\Exception\ParseException:“您不能定义 在映射“at”中时的序列项 /vagrant/vendor/symfony/symfony/src/symfony/Component/Yaml/Parser.php 第81行 我似乎找不到问题所在 Task.php文件:Php 复制演示时出错“;在映射中不能定义序列项";,php,forms,symfony,Php,Forms,Symfony,我在尝试复制Symfony提供的演示时出错。你可以在这里找到它 当我将表单包含在控制器中时,我可以让表单正常工作,但当我将表单设置为自己的类时,我最终会得到一个错误,上面写着 在映射中不能定义序列项 服务器错误-解析异常 日志返回: 严重-未捕获的PHP异常 Symfony\Component\Yaml\Exception\ParseException:“您不能定义 在映射“at”中时的序列项 /vagrant/vendor/symfony/symfony/src/symfony/Compone
<?php
namespace Acme\TaskBundle\Entity;
class Task
{
protected $task;
protected $dueDate;
public function getTask()
{
return $this->task;
}
public function setTask($task)
{
$this->task = $task;
}
public function getDueDate()
{
return $this->dueDate;
}
public function setDueDate(\DateTime $dueDate = null)
{
$this->dueDate = $dueDate;
}
}
问题是我没有定义数组的yml文件吗?在类型类更改行中
->add('dueDate',null,array('mapped'=>false))
到->add('dueDate',null,array())
您的
dueDate
字段确实已映射您的yml文件中是否有这样的内容
stuff:
thing1: one // mapping
thing2: two // mapping
thing3: three // mapping
- four // sequence
根据我的猜测,错误在于不能在同一个数组语句中混合使用yaml“映射”和“序列”
所以它必须是
stuff:
thing1: one
thing2: two
thing3:
- four
或
根据您尝试创建的阵列类型,仍然会产生相同的问题。我现在明白了。错误在您的配置中的某个位置。您是否使用YAML配置您的实体?我相信错误就在那里。我最初将它设置为映射,并认为我缺少一些东西,所以我将映射设置为false,以查看它是否可以解决错误,但它没有。看起来一切都应该正常运转。我看到了关于配置文件的其他评论,但是我在配置文件中没有设置任何会影响我所做的事情。我只是在上面添加了config.yml文件,这不是我所说的。您是否有实体的yaml文件?是否存在默认位置的映射?我没有创建任何具有映射的yml文件。我创建的唯一文件是我在顶部发布的演示中的文件。你是对的,它在我的验证文件中。这很有趣,因为我复制并粘贴了它,但我一定错过了什么。对不起,我不能增加声誉,否则我会的!谢谢!您的验证应该是
-DateTime:~
,而不是-Type:\DateTime
。这可能不是问题的全部。这并没有解决问题,但感谢您的更正。
# Acme/TaskBundle/Resources/config/validation.yml
Acme\TaskBundle\Entity\Task:
properties:
task:
- NotBlank: ~
dueDate:
- NotBlank: ~
- Type: \DateTime
stuff:
thing1: one // mapping
thing2: two // mapping
thing3: three // mapping
- four // sequence
stuff:
thing1: one
thing2: two
thing3:
- four
stuff:
thing1: one
thing2: two
thing3: three
thing4: four