link_to () успешно генерирует маршрут, но нажатие на эту ссылку приводит к 404 - PullRequest
1 голос
/ 13 марта 2009

Я настроил веб-сайт . Если я пытаюсь щелкнуть ссылку, например, register , я получаю следующую ошибку:

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL 
    "/trevelyan.alumni/register" (/).

Ссылки генерируются с помощью

<?php 
    print link_to( 'Register', 'register/index' ); 
?>

И у меня есть модуль 'register' в apps / frontend / modules / register.

Я довольно новичок в Symfony, любая помощь приветствуется!


routing.yml:

# default rules
homepage:
  url:   /
  param: { module: home, action: index }

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /trevelyan.alumni/:module/:action/*

Ответы [ 7 ]

1 голос
/ 15 марта 2009

Мне удалось это исправить, отредактировав файлы контроллера symfony, чтобы использовать переменные $ _SERVER для выбора модуля, если он не был найден.

1 голос
/ 08 сентября 2011

в конце вашего routing.yml файла:

homepage:
  url:   
  param: { module: main, action: index }

default:
  url:   /:module/:action/*

и не забудьте потом очистить кеш;)

1 голос
/ 13 марта 2009

Прочитайте Стивена Оксли, но попробуйте также:

Убедитесь, что в вашем модуле есть хотя бы класс действия dir с правильным именем (symfony чувствителен к регистру, и это очень сложно).

Если вы это сделаете, убедитесь, что действие по умолчанию (в файлах конфигурации модуля) является одним из классов действий в вашем модуле.

Не забывайте очищать кеш каждый раз, когда вы меняете файл конфигурации.

1 голос
/ 13 марта 2009

Я думаю, что ваша проблема в том, что вы запускаете Symfony из «подсайта», а не из «корневого» URL (http://www.dur.ac.uk/trevelyan.alumni вместо http://www.dur.ac.uk/). Я думаю, самое простое решение - добавить trevelyan.alumni в начало всех ваших URL-адресов в routing.yml.

Например, для маршрута default вместо

default:
  url: /:module/:action/*

использование

default:
  url: /trevelyan.alumni/:module/:action/*
0 голосов
/ 30 декабря 2009

Я обновился с symfony 1.2 до 1.4, и у меня возникла эта проблема. В конце концов, в основном все файлы конфигурации изменились настолько, что маршрутизация каким-то образом прервалась. Просмотр файлов конфигурации приложения и сравнение / обновление их с шаблонами «нового приложения», находящимися в lib / vendor / symfony / lib / config / config (или где бы вы ни хранили symfony), исправили эту проблему.

0 голосов
/ 17 марта 2009

Вы должны удалить точку из соответствующего URL для маршрута из-за правил маршрутизации по умолчанию

изменить маршрут по умолчанию на:

default:
  url: /trevelyan_alumni/:module/:action/*

и это должно работать. обратите внимание, что точка (.) заменяется на _

0 голосов
/ 14 марта 2009

Просто краткое замечание, чтобы изменения вступили в силу, вы должны запустить Symfony clear cache:

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