Zend Framework не ищет действия в стиле верблюда при использовании маршрутизатора.

Привет, ребята, у меня есть проблема, надеюсь, кто-то может пролить свет на это.

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

Вот мой маршрут:

$FrontController = Zend_Controller_Front::getInstance();
$Router = $FrontController->getRouter();
$Router->addRoute("artistsave",
    new Zend_Controller_Router_Route
    (
        "artist/save-artist",
        array(
        "controller"=>"artist",
        "action"    =>"saveArtist"
        )
    )
);

Теперь для меня это должно выглядеть в ArtistController для действия saveArtistsAction, но это не вызывает эту ошибку:

К сожалению, вы столкнулись с ошибкой ниже. Действие «saveartist» не существует и не попало в __call()

Таким образом, похоже, что мой верблюжий корпус был удален в маршрутизаторе, так как a для Artist теперь отображается в нижнем регистре в ошибке, и если я переименую свое действие, чтобы оно соответствовало этому, оно сработало!

Любая идея, почему он не ищет saveArtist?

Я понимаю, что могу просто переименовать его, чтобы сохранить, поскольку он является частью объекта художника, но теперь я нашел это, и хотел бы понять, прежде чем отклеиться в другой раз в будущем.

Заранее спасибо за любую помощь :)


Как только я отправил это, я понял это, но я чувствую, что другие могут совершить ту же ошибку, поэтому лучше оставить это здесь и сообщить решение!

В маршрутизаторе он все еще находится в форматировании URL-адреса. Я должен был использовать дефисы, а не верблюжий регистр, тогда фреймворк работает. так вот мое исправление/решение:

$Router->addRoute("artistsave",
    new Zend_Controller_Router_Route
    (
    "artist/save-artist",
    array(
            "controller"=>"artist",
        "action"    =>"save-artist"
    )
    )
);

Удачного кодирования :)


person adrian    schedule 05.10.2010    source источник
comment
(связано) stackoverflow.com/questions/3426036/   -  person Gordon    schedule 06.10.2010


Ответы (1)


Соглашения об именах определяют, что ваши действия должны быть названы строчными буквами до слова «Действие».

Таким образом, правильный способ называть действия:

сохранитьисполнителиAction()

что-то, что делает что-то ещеAction()

person rg88    schedule 06.10.2010