symfony2表单创建者基于注释

时间:2012-06-23 19:30:02

标签: php forms symfony annotations

我正在开发机制,允许我从类注释自动创建表单。 例如,有一个名为“新闻”的类,带有一些自定义注释。

/**
 * @Admin\Form(name="news")
 */
class News
{
    /**
     *
     * @Admin\Field(name="title", type="text")
     */
    private $title;

} 

我的目标是编写机制,检查是否存在具有“表单”注释的类,并根据此类字段创建表单。

我应该把这个机制放在哪里?首先,我在考虑使用FormFactory,但我相信这样的事情还有更好的地方,也许是扩展?

2 个答案:

答案 0 :(得分:3)

已经有一个捆绑包可以满足您的要求:http://knpbundles.com/FlintLabs/FormMetadataBundle

但是,如果你想自己创建它,你应该创建一个包,并在其中创建一个基于doctrine2规范的自定义注释驱动程序(因为Symfony使用Doctrine来读取注释)

答案 1 :(得分:0)

在Symfony2中,您可以使用"Form Type Extensions"向现有表单字段添加功能。

要将扩展名应用于所有字段类型,请将getExtendedType()方法的返回值设置为“form”,即:

public function getExtendedType()
{
    return 'form';
}

我还没想出如何从表单扩展中获取注释。