2015-02-15 2 views
2

небольшая проблема с работой. У меня есть страница/view-warn, в которой отображаются мои данные. Для каждой строки данных я обеспечиваю опцию удаленияSymfony2 - Получить идентификатор от маршрута до контроллера

<input type="button" value="Delete" data-url="{{ path('NickAlertBundle_delete') }}" onclick="delete_alert({{ alert[0].id }})"/> 

Когда эта кнопка нажата, Javascript функция вызывается.

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

Так, чтобы называть мой маршрут удаления и передавать идентификатор строки данных, подлежащей удалению. Мой маршрут в настоящее время нравится так

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

У меня есть один и тот же шаблон URL-адрес, как просмотреть-оповещение, потому что, когда они удалить предупреждение с этой страницы, я не хочу, чтобы они перенаправляются на другую страницу.

Так что теперь я пытаюсь получить доступ к идентификатору в своем контроллере, чтобы я мог удалить предупреждение. На данный момент я пытаюсь

public function deleteAction(Request $request) 
{ 
     $id = $request->get('id'); 

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

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

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

     return new JsonResponse('Deleted'); 
} 

Ошибка я в настоящее время приема является

Идентификатор идентификатор отсутствует для запроса Ник \ AlertBundle \ Entity \ AvailabilityAlert

Как могу ли я получить идентификатор моего контроллера с помощью способа, которым я занимаюсь (через запрос ajax?)

Thanks

ответ

1

ли Вы пробовали:

if($request->isXmlHttpRequest()) 
       { 
        $id = (int)$request->request->get('row'); 
    } 

Вместо:

$id = $request->get('id'); 

?

+1

Почему он хочет вытащить запрос из контейнера, когда он уже передан контроллеру? Я согласен, что поскольку параметр называется «строка», то использование строки имеет больше смысла, чем id. – Cerad

+0

Хороший вопрос Cerad. Просто у меня есть привычка использовать контейнер. Вы правы, я отредактировал. –

Смежные вопросы