19

Symfony2 FormBuilder でフォームを作成しましたが、編集ビューでフィールドの 1 つを無効にしたいと考えています。私は実際にラッパー(display:none)でそれを隠していますが、これを行うためのより良い方法があるかどうか疑問に思っていました. 私のコードは次のようになります。

エンティティ タイプ

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('fieldToDisabledInEditView');
    // ...

エンティティコントローラ

public function newAction() {
    $entity = new Entity;
    $form = $this->createForm(new EntityType, $entity);
    // ...
}
public function editAction() {
    $entity = new Entity;
    $form = $this->createForm(new EntityType, $entity);
    // ...
}

新しい (小枝) テンプレート

<form>
    {{ form_row(form.fieldToDisabledInEditView) }}
    {# ... #}

編集 (小枝) テンプレート

<form>
    <span class="theValueOfTheHiddenField">{{ entity.fieldToDisabledInEditView }}</span>
    <div style="display:none">
        {{ form_row(form.fieldToDisabledInEditView) }}
    </div>
    {# ... #}
4

5 に答える 5

11

このアプローチはまったくエレガントではありませんが、単純なので使用します。

エンティティコントローラー

public function newAction() {
    $entity = new Entity;
    $form = $this->createForm(new EntityType, $entity);
    // ...
}
public function editAction() {
    $entity = new Entity;
    $form = $this->createForm(new EntityType, $entity);
    $form->remove('fieldToDisabledInEditView');    
    // ...
}
于 2014-09-18T17:43:15.953 に答える