【问题标题】:Edit Entity with multiple Addresses in the same Symfony2 twig在同一个 Symfony2 树枝中编辑具有多个地址的实体
【发布时间】:2012-08-16 15:12:00
【问题描述】:

我有一个代表机构的实体。因此,该机构有多个地址(地址实体),每个地址都有街道、邮政编码等。

问题是:我有一根树枝,可以显示有关机构的所有信息,包括该机构所在的地址表。

我只想点击表格中的一个地址,然后弹出一个窗口来编辑地址(然后保存按钮会将地址的 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 绝对没有返回任何东西! 但是当我在 chrome 上检查这个标签时,我有:
&lt;input type="hidden" id="fccn_corebundle_localtype_id" name="fccn_corebundle_localtype[id]" value="1"&gt;

有没有更好的方法来做到这一点?任何帮助将不胜感激。

谢谢。

阿方索

【问题讨论】:

    标签: symfony doctrine entity twig


    【解决方案1】:

    我不确定我是否正确,但我会说:

    为什么要在控制器的路由中使用 id?

    您可以通过 POST 获取 id 并将其传递给持久化。
    据我了解,id 是通过 javascript 以表单形式设置到输入字段的

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

    所以它应该在您的请求中,而您实际上在路由中不需要它。

    【讨论】:

    • 您理解正确并得到了有效的答案!有时,您对一个想法如此着迷,以至于卡住了。它工作得很好。我所要做的就是$postData = $request-&gt;request-&gt;get('fccn_corebundle_localtype'); $idLocal = $postData['id']; 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多