0

私は機関を表すエンティティを持っています。そのため、この機関には複数の住所 (住所エンティティ) があり、それぞれに番地、郵便番号などが含まれています。

問題は、機関が配置されているアドレスのテーブルを含む、機関に関するすべてを示す小枝を持っていることです。

私が望んでいたのは、テーブル内の 1 つのアドレスをクリックして、アドレスを編集するためのポップアップ ウィンドウを表示することだけでした (そして、[保存] ボタンをクリックすると、アドレスの ID がコントローラー関数に渡されます)。

これを行う最善の方法は何ですか?ここでの問題は、誰かがヒットをクリックするまでアドレスの ID を持っていないことです。そして、フォームに正しい情報を入力する必要があります。

ここに私が持っているものがあります:

アドレスの表 (小枝内):

<tbody>
    {% for local in locais %}
        <tr class="odd gradeX"> 
            <td>{{ local.name}}</td>
        <td>{{ local.address}}</td>
            <td>{{ local.postalCode}}</td>
            <td><a title="Editar" class="label label-info" 
                         onclick="editLocal('{{ local.name}}',  
                                     '{{ local.address}}',
                                     '{{ local.postalCode }}'
                                     '{{ local.id }}');">
                         <i class="icon-edit icon-white"></i></a></td>
        </tr>
    {% endfor %}
</tbody>

次に、ローカル編集フォームに入力する次の JavaScript 関数があります。

function editLocal(name, address, postalCode, id){

oFormObject = document.forms['editLocal']; 
oFormObject.elements['fccn_corebundle_localtype_id'].value = id;
oFormObject.elements['fccn_corebundle_localtype_name'].value = name;
oFormObject.elements['fccn_corebundle_localtype_address'].value = address;
oFormObject.elements['fccn_corebundle_localtype_postalCode'].value = codigoPostal;

$('#editLocal').modal('show');
};

ここではすべて正常に動作します!フォームに正しい情報が表示されます。

次に、ID を取得し、それを編集済みの情報とともにコントローラーに渡すだけで、既存のローカル エンティティを永続化できます。

私は次のものを持っています!

<form id="editLocal" class="form-horizontal" 
    action= "{{ path('FccnEduroamEntidadeBundle_editLocal', 
                 { 'idLocal': editLocalForm.vars.value.id }) }}" 
    method="post" {{ form_enctype(editLocalForm) }}>

        {{ form_row(editLocalForm.name) }}
        {{ form_row(editLocalForm.address) }}
        {{ form_row(editLocalForm.postalCode) }}
            {{ form_rest(editLocalForm) }}

        <div class="form-actions">
            <button class="btn" type="submit">Guardar</button>
        </div>
</form> 

ここでの問題は、editLocalForm.vars.value.idがまったく何も返さないことです! しかし、クロムでこのタグをチェックすると、次のようになります。
<input type="hidden" id="fccn_corebundle_localtype_id" name="fccn_corebundle_localtype[id]" value="1">

これを行うより良い方法はありますか?どんな助けでも本当に感謝しています。

ありがとう。

アフォンソ

4

1 に答える 1

2

正しいかどうかわかりませんが、次のように言います。

コントローラーのルートに id が必要なのはなぜですか?

POST 経由で ID を取得し、それを渡して持続させることができます。
私が理解している限り、IDはjavascriptを介して入力フィールドにフォームに設定されています

<input type="hidden" id="fccn_corebundle_localtype_id" name="fccn_corebundle_localtype[id]" value="1">

したがって、リクエストに含まれている必要があり、実際にはルートで必要ありません。

于 2012-08-16T16:13:17.777 に答える