Zend Framework не ищет действия в верблюжьей клетке при использовании маршрутизатора - PullRequest
1 голос
/ 06 октября 2010

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

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

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

$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?

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

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


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

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

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

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

1 Ответ

0 голосов
/ 06 октября 2010

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

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

saveartistsAction ()

somethingthatdoessomethingelseAction ()

...