2014-02-08 4 views
0

Я практиковал symfony2. И я получил проблему:Как получить путь к действию контроллера в Symfony2?

Я только что сделал простую страницу прут, какие сообщения данные действия контроллера, и есть функция (она работает):

$.ajax({ 
    type: 'POST', 
    url: "{{ path('my_test_account_register') }}", 
    data: account, 
    success: function(msg){ 
     alert("Succeed!"); 
    }, 
    error: function(XmlHttpRequest,textStatus, errorThrown){ 
     alert ("Failed! "); 
    } 
} 

Я не хочу добавьте аннотацию к каждому моему действию. Я хотел заменить url: "{{ path('my_test_account_register') }}" на url: "{{ path('MyTestBudnle:Account:register') }}", но я потерпел неудачу.

Мой вопрос: как указать URL-адрес действия внутри контроллера? Возможно, это глупый вопрос, и это мой первый раз для stackoverflow. Так, приятно познакомиться с вами, ребята!

+1

Почему бы не использовать routing.yml, чтобы указать ваш маршрут и использовать их вместо использования аннотаций в каждом действии –

+0

Честно говоря, я предпочитаю аннотации (TωT) ノ – Noah

+0

Вы просто не можете использовать эту аннотацию, поскольку стандарт Symfony2 требует укажите имя маршрутизации – DonCallisto

ответ

0

Функция твика path() Вы используете (правильно), создает URL-адрес для заданного имени маршрута и некоторых необязательных параметров.

Контроллер может иметь разные маршруты (и, тем самым, разные URL-адреса) для одного и того же действия. Из-за этого вы не можете использовать нотацию Bundle:Controller:Action, если вы хотите узнать URL-адрес для конкретного действия. Вместо этого вы должны использовать имя маршрута.

Разница между path() и render() состоит в том, что render() включает в себя ответ подзапроса на конкретное действие в шаблон. Поскольку это все происходит внутренне, нет необходимости генерировать URL-адрес для этого. Вы даже можете использовать render() с действиями, которые вообще не имеют маршрута.

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