Symfony2 - 问题得到正确的ID显示/ {id}

时间:2015-03-01 13:37:18

标签: php symfony

我有一个视图页面,它传递了所有活动警报。在每个显示的行上,我有一个显示按钮,以便您可以看到单独的警报

{% for alert in alerts %}
    <tr>
        <td>{{ alert[0].id }}</td>
        <td>{{ alert[0].alertStatus }}</td>
        <td>
            <input type="button" value="Show" data-url="{{ path('NickAlertBundle_show', {id: alert[0].id}) }}" onclick="show_alert( {{ alert[0].id }} )" id="show"/>
        </td>
    </tr>
{% endfor %}

因此,当单击该按钮时,将调用javascript函数show_alert。

function show_alert(id){
    alert(id);
    $.ajax({
        type: "POST",
        url: $("#show").attr('data-url'),
        data: {id: id},
        success: function(data) {
            if(data){

            }else{
                alert("Unknown Error!");
            }
        },
        error:function(){
            alert(id);
        }
    });
}

现在我在该功能的顶部发出警报,该警报始终显示正确的ID。我认为问题在于ajax调用的url部分。它调用的data-url应该是正确的。这就是它应该调用的内容

NickAlertBundle_show:
    pattern:  /show-alert/{id}
    defaults: { _controller: NickAlertBundle:Alert:show }
    requirements:
       _method:  GET|POST
       id:  \d+

所以这应该调用控制器动作

public function showAction(Request $request, $id)
{
    var_dump($id);
    if($request->isXmlHttpRequest())
    {
        $id = (int)$request->request->get('id');
    }

    return new JsonResponse('test');
}

此时,此操作中的var_dump始终输出上次添加的警报的ID,而不是所选警报。当我显示警报时,它始终显示最新添加的警报。

那么是什么导致它获取最新的警报ID而不是所选的id?正如我所说,它最初获得正确的ID,但在某些时候这会改变。

由于

1 个答案:

答案 0 :(得分:0)

您不应在模板中声明重复的ID,例如id =“show”,更好地使用class或声明您的ID id="show_1 ... n"