【问题标题】:Symfony2 form renders one field with same nameSymfony2 表单呈现一个同名字段
【发布时间】:2012-06-22 07:25:25
【问题描述】:

我有存储在我的数据库中的设置。这些设置有一个实体类。我在我的Controller 中请求它们并将设置数组发送到我的FormType。但是在buildForm() 我只能渲染一个设置。我相信这是因为所有设置的字段名称完全相同。

但是当我尝试为字段编号时,我收到一条错误消息,指出有 no function mapped to a Setting class with getId1() or isId1()

这里是sn-p的代码:

protected $allSettings;

public function __construct(array $allSettings)
{
    $this->allSettings = $allSettings;
}

public function buildForm(FormBuilder $builder, array $options)
{
    foreach($this->allSettings as $setting) {
        $id = $setting->getId();
        $builder->add('id'.$id, 'hidden')->setData($setting);
    }
}

【问题讨论】:

    标签: php symfony symfony-forms


    【解决方案1】:

    您是否尝试使用collection type

    然后在您的控制器中检索您的设置数组,创建一个这样的集合表单:

    $form = $this->createForm('collection', $yourArray, array(
        'type' => 'your settings_type'
    ));
    

    'your_settings_type' 应该是用于编辑设置实体的 FormType 的名称。

    也许 quelque 选择了 de ce 流派:

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('key', 'text');
        $builder->add('value', 'text');
    }
    

    当然,就你而言,可能不是key & value

    请记住一件事:不要使用 ID。你不需要。 FormComponent 是一个面向对象的表单框架。让它用对象来完成它的工作。 :)

    【讨论】:

    • 嗯,这正是我想要的。非常感谢!并感谢您的提示。
    猜你喜欢
    • 2014-04-04
    • 2021-11-15
    • 1970-01-01
    • 2019-12-07
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多