编译时不允许使用Symfony Dynamic类名

时间:2016-04-08 12:04:53

标签: forms symfony

我正试图动态地表格形式。表单名称存储在$ obj-> getFormTypeName()。

$formName = 'Acme\testBundle\Form\CustomType\\'.ucfirst($obj->getFormTypeName()).'Type';
$contactForms[$obj->getId()] = $this->createForm($formName::class);

但我收到错误:Compile Error: Dynamic class names are not allowed in compile-time ::class fetch

有没有办法用symfony中的Scope Resolution Operator动态初始化表单?

感谢阅读。

2 个答案:

答案 0 :(得分:6)

要解决这个问题,我会做类似的事情:

$contactForms[$obj->getId()] = $this->createForm(
    'Acme\testBundle\Form\CustomType\' . ucfirst($obj->getFormTypeName()) . 'Type'
);

毕竟,:: class只返回类的完全限定名。

答案 1 :(得分:0)

不应该在类的字符串名称的变量(例如)上调用::classAcme\testBundle\Form\CustomType\FormType这样

'Acme\testBundle\Form\CustomType\'::class,最后是类的字符串var,它是类名本身。

据我所知'stringContents'.val()