我正在研究允许我从类注释自动创建表单的机制。例如,有一个名为"News"的类,其中包含一些自定义注释。
/**
* @Admin'Form(name="news")
*/
class News
{
/**
*
* @Admin'Field(name="title", type="text")
*/
private $title;
}
我的目标是编写机制,该机制将检查是否存在带有"Form"注释的类,并根据此类字段创建表单。
我应该把这个机制放在哪里?首先,我正在考虑欠FormFactory,但我相信有更好的地方做这样的事情,也许是扩展?
已经有一个捆绑包可以满足您的要求:http://knpbundles.com/FlintLabs/FormMetadataBundle
但是,如果您想自己创建它,您应该创建一个捆绑包,并在其中根据 doctrine2 规范创建自定义注释驱动程序(因为 Symfony 使用 Doctrine 来读取注释)
在Symfony2中,您可以通过使用"表单类型扩展"向现有表单字段添加功能。
要将扩展应用于所有字段类型,请将getExtendedType()
方法的返回值设置为 "form",即:
public function getExtendedType()
{
return 'form';
}
我还没有弄清楚如何从表单扩展中获取注释。