Маршруты не работают в Symfony2

У меня какая-то очень странная проблема. Я добавляю новое действие в контроллер, регистрирую его в файле маршрутизации yml. route:debug показать маршрут как доступный. Но когда я пытаюсь перейти по этому URL-адресу, я получаю сообщение об ошибке, что этот маршрут не существует. Что я делаю неправильно? Старые маршруты работают исправно. Этот маршрут поймать маршрут ниже:

vputi_company:
path:     /company/{company_id}
defaults: { _controller: VputiCompanyBundle:Company:showCompany, company_id: 0 }

Поймано:

vputi_company_dashboard:
path:     /company/dashboard
defaults: { _controller: VputiCompanyBundle:Company:companyDashboard }

Когда я заменяю это и устанавливаю выше, все работает правильно.


person nowiko    schedule 19.01.2015    source источник
comment
пожалуйста, предоставьте немного кода для проверки чего-либо... PS: если вы находитесь в рабочей среде, попробуйте очистить кеш...   -  person Matteo    schedule 19.01.2015
comment
нет интересного кода для публикации. Я очищал кеш 1 миллиард раз. Я пытаюсь изменить возврат одного действия, но он все еще возвращает старые результаты.   -  person nowiko    schedule 19.01.2015
comment
порядок маршрутов также важен, есть ли шанс, что предыдущий маршрут поймает URL-адрес, который вы пытаетесь обработать?   -  person Rooneyl    schedule 19.01.2015
comment
@Rooneyl, это решит мою проблему. Но что касается порядка URL-адресов, оба маршрута работают связанные, но разные вещи, как первый маршрут (действие) может поймать второй?   -  person nowiko    schedule 19.01.2015
comment
@Panzer_Commander, если вы опубликуете свои маршруты, я объясню это в ответе.   -  person Rooneyl    schedule 19.01.2015
comment
@Rooneyl, я добавил маршруты   -  person nowiko    schedule 19.01.2015
comment
@Panzer_Commander Я добавил для вас ответ с объяснением   -  person Rooneyl    schedule 19.01.2015


Ответы (2)


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

Ваши примеры маршрутов;

vputi_company:
path:     /company/{company_id}
defaults: { _controller: VputiCompanyBundle:Company:showCompany, company_id: 0 }
vputi_company_dashboard:
path:     /company/dashboard
defaults: { _controller: VputiCompanyBundle:Company:companyDashboard }

В ваших примерах маршрутов переменная для {company_id} может быть строкой "dashboard", поэтому выполняется первый маршрут, указанный в списке, и не передается следующий маршрут (тот, который вы хотите).

Переупорядоченные маршруты;

vputi_company_dashboard:
    path:     /company/dashboard
    defaults: { _controller: VputiCompanyBundle:Company:companyDashboard }
vputi_company:
    path:     /company/{company_id}
    defaults: { _controller: VputiCompanyBundle:Company:showCompany, company_id: 0 }

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

person Rooneyl    schedule 19.01.2015

Проверьте, не забыли ли вы Params в своем маршруте. (или, может быть, вы добавили ненужный "/" в конце)

Также, как сказал Маттео, очистите кеш (кэш приложения php/консоли: очистить) и предоставьте нам код

person user3653664    schedule 19.01.2015