2

データベースに保存する設定があります。これらの設定にはエンティティ クラスがあります。my でそれらをリクエストし、Controller設定の配列を my に送信しますFormType。しかし、buildForm()レンダリングできる設定は 1 つだけです。これは、フィールドの名前がす​​べての設定とまったく同じであるためだと思います。

しかし、フィールドに番号を付けようとすると、 があるというエラーが表示されますno function mapped to a Setting class with getId1() or isId1()

コード スニペットは次のとおりです。

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);
    }
}
4

1 に答える 1

1

コレクションタイプを使用しようとしましたか?

次に、コントローラーで設定の配列を取得し、次のようなコレクションフォームを作成します。

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

'your_settings_type'設定エンティティの編集に使用するFormTypeの名前である必要があります。

たぶん、quelqueはde ce genreを選びました:

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

もちろん、あなたの場合、それはおそらくkey&ではありませんvalue

IDを使用しないでください。必要ありません。FormComponentは、オブジェクト指向のフォームフレームワークです。オブジェクトを使って仕事をしましょう。:)

于 2012-06-22T07:37:48.183 に答える