【问题标题】:symfony2 form creator based on annotationssymfony2 基于注解的表单创建器
【发布时间】:2012-06-23 19:30:02
【问题描述】:

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

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

} 

我的目标是编写一种机制来检查是否存在带有“Form”注释的类并基于此类字段创建表单。

我应该把这个机制放在哪里?首先我在考虑写FormFactory,但我相信有一个更好的地方来做这样的事情,也许是Extension?

【问题讨论】:

    标签: php forms symfony annotations


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢!但这并不是我要问的:P 我知道我需要创建驱动程序(注释、ymal、xml etd),但我的问题是如何将这种机制注入 symfony 表单而不覆盖它。在 FormMetadataBundle 中有一个使用 symfony 表单工厂的服务,我不确定这是不是最好的方法。
    • 啊!我误解了。我不确定有什么更好的选择,但祝你好运。
    【解决方案2】:

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

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

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

    我还没有弄清楚如何从表单扩展中获取注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      相关资源
      最近更新 更多