2013-02-09 5 views
4

Просто начал работать в Symfony2 и действительно любил его после долгого разработки ZF1.Symfony2 Ajax app_dev.php в url

Начал добавлять некоторые функции Ajax на сайт сегодня вечером и немного запутался в следующем.

в моем Ajax вызова, например:

$.ajax({ 
    url: '/app_dev.php/ajax/urlgetter', 
    data: "url="+urlinput, 
    dataType: 'html', 
    timeout: 5000, 
    success: function(data, status){ 
     // DO Stuff here 
    } 
}); 

мне пришлось добавить /app_dev.php к URL, чтобы заставить его работать в Dev среде. Разве нет лучшего способа сделать это? Означает ли это, когда я меняю проект на производственную среду, мне нужно искать и заменять все экземпляры /app_dev.php ?? Надеюсь, я полностью пропустил что-то простое.

+0

Вы должны настроить ваш компьютер-разработчик таким образом, чтобы вам не приходило в голову 'app_dev.php', чтобы достичь вашей среды разработки, но вместо этого используйте виртуальный хост (или его эквивалент). – cheesemacfly

ответ

1

С помощью этой функции Ajax Jquery помещается на стороне веточку и URL указывает на приложение вы можете вставить путь

$.ajax({ 
    url: '{{ path("your_ajax_routing") }}', 
    data: "url="+urlinput, 
    dataType: 'html', 
    timeout: 5000, 
    success: function(data, status){ 
     // DO Stuff here 
    } 
}); 
+0

Это не сработало. Путь будет передаваться точно как {{path ("urlgetter")}}. Есть ли что-то, что нужно настроить для этого, чтобы работать из коробки? В итоге я использовал FOSJsRoutingBundle. – someuser

3

маршрутизации Я думаю, этот вопрос уже вроде старый, но я наткнулся на такой же проблемой.

Не имеет решения «лучшей практики», но вот что я делаю.

В twig вы можете использовать это {{ path('yourRouteName') }} вещь совершенным способом. Так что в моем twig файле у меня есть структура вроде этого:

...  
<a href="{{ path('myRoute') }}"> //results in e.g http://localhost/app_dev.php/myRoute 
    <div id="clickMe">Click</div> 
</a> 

Теперь, если кто-то нажимает на DIV, я делаю следующее в моем .js file:

$('#clickMe').on('click', function(event) { 
    event.preventDefault(); //prevents the default a href behaviour 
    var url = $(this).closest('a').attr('href'); 
    $.ajax({ 
     url: url, 
     method: 'POST', 
     success: function(data) { 
      console.log('GENIUS!'); 
     } 
    }); 
}); 

Я знаю, что это не является решением для каждая ситуация, в которой вы хотите, чтобы вызвать запрос Ajax, но я просто оставить это здесь и, возможно, кто-то считает, что это полезно :)

+0

[ссылка] http://stackoverflow.com/questions/15448563/how-to-render-twig-path-call-as-jquery-ajax-url Это также кажется приятной альтернативой – SirDerpington

4

Я закончил с использованием jsrouting-расслоение

После установки я мог бы просто сделать следующее:

$.ajax({ 
    url: Routing.generate('urlgetter'), 
    data: "url="+urlinput, 
    dataType: 'html', 
    timeout: 5000, 
    success: function(data, status){ 
    // DO Stuff here 
    } 
}); 

где urlgetter является маршрут определенный в routing.yml как:

urlgetter: 
    pattern: /ajax/urlgetter 
    defaults: { _controller: MyAjaxBundle:SomeController:urlgetter } 
    options: 
     expose: true 

уведомления разоблачительные: истинный вариант должен быть установлен для маршрута для работы с jsrouting-bundle

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