Sonata admin Sonata Admin自动段塞验证

Sonata admin Sonata Admin自动段塞验证,sonata-admin,symfony-sonata,symfony-3.4,Sonata Admin,Symfony Sonata,Symfony 3.4,我有一个名为“title”的表单,我不想在表单上显示实体的“slug”属性,但我想验证基于标题生成的slug是否唯一 我在管理员的“preValidate()”函数中生成slug,由于实体的注释,唯一性测试正在进行,这很好,但是: 因为表单上没有slug字段,所以错误只出现在顶部(甚至没有提到字段的名称),这是非常无用的 所以我想把这个错误绑定到我的标题字段,或者显示一个只读的slug字段。我发现后者似乎更容易,所以我添加了带有默认空字符串值的字段,问题是,即使在表单提交和错误消息之后,slug

我有一个名为“title”的表单,我不想在表单上显示实体的“slug”属性,但我想验证基于标题生成的slug是否唯一

我在管理员的“preValidate()”函数中生成slug,由于实体的注释,唯一性测试正在进行,这很好,但是:

因为表单上没有slug字段,所以错误只出现在顶部(甚至没有提到字段的名称),这是非常无用的

所以我想把这个错误绑定到我的标题字段,或者显示一个只读的slug字段。我发现后者似乎更容易,所以我添加了带有默认空字符串值的字段,问题是,即使在表单提交和错误消息之后,slug字段仍然是空字符串,尽管它在后台有值“asd asd asd”

在设置slug之前和之后,我在管理员的preValidate()期间转储了$this->getForm(),我可以在“modelData、normData和viewData”中看到所有更改。
据我所知,表单应该显示基于viewData的字段,所以我不理解

我想如果我调用$form->handle($request),它可能会工作,但它说它已经被调用了。
我想也许我可以对symfony的pre-submit事件做些什么,但后来我发现我需要admin的uniqid来访问请求的表单数据,我无法将admin注入侦听器。
我还尝试在控制器的preCreate()中设置slug,但也没有成功

在根据请求填充表单之前,如何操作表单字段的值?
(或者为什么不向用户显示?)