【问题标题】:Symfony form type inheritance problemsSymfony 表单类型继承问题
【发布时间】:2014-07-09 13:39:09
【问题描述】:

我正在使用 FOSRestBundle 构建一个 API,并使用 Symfony 提供的类型执行验证。

我面临的问题是,我正试图找到一种方法来展平表单类型继承模型,该模型是在尝试通过表单类型内的继承来防止代码重复时创建的。这是使用inherit data option 上的指南实现的。

例如

....

$builder->add('nested', new NestedType());

....

但是,这在尝试向 API 提交数据时会产生影响。

目前:

{
    "type": {
        "key": "value",
        "nested": {
            "nested_key": "value"
        }
    }
}

我追求的是什么:

{
    "type": {
        "key": "value",
        "nested_key": "value"
    }
}

有没有办法在不复制NestedType 中的代码的情况下实现这一点?

【问题讨论】:

    标签: symfony fosrestbundle


    【解决方案1】:

    我最终采用的解决方案是扩展 NestedType,例如:

    class TypeType extends NestedType
    {
      public function buildForm(FormBuilderInterface $builder, array $options)
      {
        parent::buildForm($builder, $options);
        $builder
          ->add('key');
      }
    
      ....
    

    这并不理想,因为在验证错误时,扩展类中的错误只会隐藏错误,而不是与错误相关联。

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多