2010-10-05 32 views
1

Salut les gars im ayant une tache d'ennuyer, espérons que quelqu'un peut faire la lumière sur ce point.Zend Framework ne cherche pas d'actions camel cased lors de l'utilisation du routeur

Pour une raison étrange, ma route se lève en disant que l'action n'existe pas à moins que je change le boîtier de chameau en minuscules pour ce nom d'actions puis cela fonctionne bien. mais alors ça va à l'encontre des conventions de nommage! et je ne veux pas faire mon code bâclé non plus.

Heres ma route:

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

Maintenant, pour moi, cela devrait regarder dans le ArtistController pour le saveArtistsAction d'action, mais il ne le jette cette erreur:

Whoops you encountered the below error. Action "saveartist" does not exist and was not trapped in __call()

Il semble donc avoir enlevé mon enveloppe de chameau dans le routeur comme le un pour l'artiste est maintenant minuscule dans l'erreur et si je renomme mon action pour assortir cela, cela fonctionne!

Une idée est pourquoi il ne cherche pas saveArtist?

Je me rends compte que je pourrais juste le renommer pour enregistrer car il fait partie de l'objet artiste mais maintenant j'ai trouvé cela que je voudrais comprendre avant de me décoller un autre moment dans le futur.

Merci à l'avance pour toute aide :)


Pas dès que j'ai envoyé ce que je pensé à elle, mais je sens que d'autres peuvent tomber pour la même erreur donc il vaut mieux laisser cela ici et dire la solution !

Dans le routeur, il est encore en formatage d'URL, je devais utiliser des tirets non camel boîtier alors le framework fonctionne. alors voici ma correction/solution:

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

:) Bonne programmation

+0

* (liés) * http://stackoverflow.com/questions/3426036/zend-framework -using-tirets-dans-le-nom-du-controller-urls/3426041 # 3426041 – Gordon

Répondre

-1

Les conventions de nommage précisent que vos actions doivent être nommées en minuscules jusqu'au mot « action ».

Ainsi, la bonne façon de nommer des actions est:

saveartistsAction()

somethingthatdoessomethingelseAction()