Symfony2 - 由于某种原因被删除的实体

时间:2015-03-01 17:57:13

标签: php symfony

这与先前的问题有关,但发生了一些奇怪的事情。

好的,我将视图页面传递给所有警报实体的数组,并在一个页面上显示所有警报。

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

这样可以毫无问题地工作。然而,您可以看到每个输出的警报,我给出一个删除按钮和一个显示按钮。删除按钮删除所选警报,并且显示按钮应在其自己的页面上显示所选警报。

现在,按下按钮时发生的第一件事是调用其javascript onclick函数。我的删除工作完美。我的show_alert似乎有问题。

所以这个show_alert看起来像是

function show_alert(id){
    $.ajax({
        type: "POST",
        url: $(this).attr('data-forward'),
        data: {id: id},
        success: function(data) {
            if(data){

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

我很确定问题与这一行有关

url: $(this).attr('data-forward')

那应该叫我的NickAlertBundle_show路线,

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

反过来应该调用show动作

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

    $alert = $this->get('alert_bundle.manager.availability')->getSingleAvailability($id);

    return $this->render('NickAlertBundle:Page:show.html.twig', array(
        'alert' => $alert,
        'id' => $id,
    ));
}

但是,当我点击“显示”按钮时,它似乎删除了我的警报(因此出于某种原因,它正在调用删除路由和操作)。

我的代码中是否有任何内容可以说明为什么会发生这种情况?

删除 的Javascript

function delete_alert(id){
    var answer = confirm("Confirm delete");
    if (answer){
        $.ajax({
            type: "POST",
            url: $(this).attr('data-url'),
            data: {id: id},
            success: function(data) {
                if(data){
                    var splitdata = data.split(":");
                    if(splitdata[0]=="Deleted"){
                        var id = splitdata[1];
                        alert("Your alert has been deleted");
                        location.reload();
                    }else{
                        alert(data);
                    }
                }else{
                    alert("Unknown Error!");
                }
            },
            error:function(){
                alert("Please try again!");
            }
        });
    }
}

控制器     public function deleteAction(Request $ request)     {         如果($请求 - &GT; isXmlHttpRequest())         {             $ id =(int)$ request-&gt; request-&gt; get('id');         }

    $em = $this->getDoctrine()->getManager();
    $alert = $em->getRepository('OntroAlertBundle:Alert')->find($id);

    if (!$alert) {
        throw $this->createNotFoundException('Alert entry was not found');
    }

    $alert->setIsDeleted(true);
    $alert->setAlertStatus('Inactive');
    $em->flush();

    return new JsonResponse('Deleted');
}

路线

NickAlertBundle_delete:
    pattern:  /view-alerts
    defaults: { _controller: NickAlertBundle:Alert:delete }
    requirements:
       _method:  POST

0 个答案:

没有答案