2013-03-28 1 views
0

나는 Plans라는 클래스가 있습니다. 함께 작업하는 두 가지 방법이 있습니다 : indexAction() deletePlan ($ id). 나는 실제로 deletePlan을 (실행해야Twig 내에서 메서드 호출

index.html.twig

<tr> 
    <td>{{ item.name }}</td> 
    <td>{{ item.description}}</td> 
    <td><a href="">Delete</td> 
</tr> 

마지막 태그의 삭제 링크의 경우 : indexAction()는 다음과 같은 내용으로 index.html.twig 렌더링 $ id) 메소드를 호출합니다. 이 페이지가 리디렉션되는 실제 페이지가되기를 원하지 않습니다. deletePlan ($ id) 메서드를 호출하고 true 또는 false를 반환하면 캡처 한 다음 AJAX를 사용하여 (행)을 숨길 계획입니다.

질문 : 실제로 페이지 설정, 라우트 설정 및 deletePlanAction ($ id)으로 이름 변경없이 내 나뭇 가지 파일 내에서 deletePlan ($ id) 메소드를 호출 할 수 있습니까?

감사합니다. :)

+0

HTTP를 통해 액세스하려는 모든 것은 경로와 컨트롤러가 있어야합니다. 당신은 단지 새로운 액션을 추가하고 그것이 당신의'deletePlan'을 호출하도록 할 수 있습니다. 그러면 JSON의 동작의 som 종류로 응답을 리턴 할 것입니다. – prodigitalson

답변

0

단순히 템플릿에서 메소드를 호출 할 수 없습니다. 요청을 처리하는 작업을 만들어야합니다. AJAX 호출에서이 작업의 경로를 사용할 수 있습니다. 게다가 id을 전달해야합니다. <a> 태그를 클릭하면 AJAX 호출을 실행하는 자바 스크립트를 설정합니다.

같이 보일 수 jQuery를에게 AJAX 부분을 사용 :

$.post('{{ path('routeNameOfDeleteAction') }}', function(data) { 
    $('someSelector').html(data); 
}); 

당신이 AJAX는 당신이 당신의 삭제 작업이 추가 할 수 있습니다 만 사용하여 작업 할 경우

if ($this->getRequest()->isXmlHttpRequest()) { 
    return $this->redirect($this->generateUrl('routeNameOfIndexAction')); 
} 

마지막으로 컨트롤러 수 true 또는 false과 같은 결과를 보유하는 JSON 응답을 반환하십시오.

+1

'$ this-> getRequest() -> isXmlHttpRequest()'를 사용하여 검사 할 수도 있습니다;) – l3l0

+0

@ l3l0이 힌트를 가져 주셔서 감사합니다. – insertusernamehere