Symfony定制表单字段类型FQCN以存储在数据库字段中

时间:2018-10-05 09:47:34

标签: symfony symfony-forms symfony4

我正在将symfony 2.8应用程序迁移到3.4,然后再迁移到4.1。如您所知,自定义表单字段类型的::getName()已被弃用,并分别在2.8和3.x中被删除。因此,现在需要在向表单添加自定义字段时指定FQCN。问题是我们有一个Settings表,其中包含一组代表表单字段的行或行。 DB表中此类型的每一行都有其自己的字段类型(DB表中的一列)。看起来像这样:

'4', '1', NULL, 'password_expiration', '365', 'integer', 'Period of user password expiration, in days', 'Password Expiration'
'6', '1', NULL, 'login_min_length', '3', 'integer', 'Minimum allowable login length', 'Login Minimum Length'
....
'17', '1', NULL, 'help_page', '', 'ckeditor', 'Help page content for users', 'Help page'

其中integerckeditor是用于作为自定义或本机symfony字段类型名称传递到表单的::add()调用中的值。

您可以想象它在3.4下引发了异常Could not load type "ckeditor": class does not exist,因为我需要以某种方式引用MyBundle\Form\Type\CkEditorType::class的FQCN。但是,即使我将数据库字段值更新为“ MyBundle \ Form \ Type \ CkEditorType :: class”(显然带有正确转义的反斜杠),它也将被解释为字符串,而不是被评估。

所以问题是:如何在呈现表单时将FQCN存储在数据库字段中并对其进行解释?

0 个答案:

没有答案