Ajax и Jquery в Symfony - PullRequest
       3

Ajax и Jquery в Symfony

6 голосов
/ 26 сентября 2011

Я новичок в Symfony (версия 2), у меня есть проект, реализованный на простом базовом PHP, и сейчас я переделываю свои страницы, связанные с фреймворком Symfony, и прибыл в свои функции jquery ajax, конечно, буду другим, Я делал так:

$("#div").click(function(){
  $.post("targetFile.php",{/*parameters*/,function(data){ });
});

В: Как заставить это работать на Symfony? Что поставить вместо targetFile.php? маршрут наиболее вероятно. а что делать на стороне контроллера и роутера? Я посмотрел на Google и здесь, но не получил четких ответов. Привет.

Ответы [ 2 ]

5 голосов
/ 26 сентября 2011

Вы просто должны заменить targetFile.php вашим собственным маршрутом.

Так что, если у вас есть это в вашем routing.yml:

# app/config/routing.yml
hello:
    pattern:      /ajax/target
    defaults:     { _controller: AcmeHelloBundle:Site:index }

Вы можете использовать этот JavaScript:

$("#div").click(function(){
  $.post("/ajax/target",{/*parameters*/,function(data){ });
});

На стороне Symfony2 будет вызван метод indexAction объекта SiteController из AcmeHelloBundle.

4 голосов
/ 26 сентября 2011

Если вы установили в routing.yml это:

_admin_ajax:
    resource: "@SomethingAdminBundle/Controller/AjaxController.php"
    type:     annotation
    prefix:   /admin/ajax  

... и внутри контроллера, который будет обрабатывать ajax, вызовите это:

/**
 * @Route("/ajaxhandler", name="_admin_ajax_handler")
 */
public function handlerAction() {

    $isAjax = $this->get('Request')->isXMLHttpRequest();
    if ($isAjax) {
        //...
        return new Response('This is ajax response');
    }
    return new Response('This is not ajax!', 400);
}

... тогда внутри шаблона TWIG вы должны назвать его так:

$("#div").click(function(){
  $.post("{{ url('_admin_items_add') }}",{/*parameters*/,function(data){ });
});

... и реальный маршрут для вашего действия будет создан с помощью движка шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...