При маршрутизации symfony sfDoctrineRouteCollection возникает ошибка 404 «Пустой модуль и / или действие после анализа URL-адреса ...» - PullRequest
0 голосов
/ 23 марта 2011

У меня есть следующая конфигурация маршрутизации:

entry:
  class:            sfDoctrineRouteCollection
  options:
    model:          ProjectEntry
    module:         entry
    prefix_path:    /entry
    column:         slug
    with_show:      false
    model_methods:
      { object: getEntryBySlug }
  requirements:
    slug:             \w+

, которая, помимо прочего, дает мне следующий вывод с приложением symfony: router:

entry_edit             GET      /entry/:slug/edit.:sf_format

в lib / model /doctrine / ProjectEntryTable.class.php У меня есть следующий метод:

public static function getEntryBySlug($parameters)
{
  return Doctrine_Core::getTable('ProjectEntry')->findOneBySlug($parameters['slug']);
}

Однако при вводе URL-адреса, например:

frontend_dev.php / entry / my-slug/ edit

Я получаю следующую ошибку:

404 |Не найден |sfError404Exception
Пустой модуль и / или действие после синтаксического анализа URL "/ entry / my-slug / edit" (/).

(предположим, что my-slug является допустимым слагом для некоторой записив таблице ProjectEntry)

Я не нашел причину этой ошибки, что я могу делать неправильно?

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

Любые идеи высоко ценятся ...

1 Ответ

0 голосов
/ 23 марта 2011

Хорошо, понял!

Мне просто нужно было отменить требование к слизню, и это было все.

Дело в том, что sfDoctrineRouteCollection (и, возможно, другие sfObjectRouteCollections? Кто-нибудь знает?) Генерирует свои маршруты, например, редактируемый, как:

prefix/column/edit

поэтому, если для столбца есть требование \ w +, то в основном говорится, что все, что находится после префикса, является частью столбца, включая часть '/ edit'. Удаление требования загружает заданное по умолчанию ([^ / \ \.] +), Что, насколько я понимаю, регулярных выражений говорит о том, что следующий '/' является пределом ...

извините за такой вопрос новичка, но теперь он решен ...

...