2011-06-01 4 views
0

Je ne comprenais pas complètement comment fonctionne la classe sfDoctrineRoutesymfony modèle sfDoctrineRoute question

par exemple, j'ai l'itinéraire suivant:

Comment: 
    class: sfDoctrineRouteCollection 
    options: 
    prefix_path: :username/comment 
    module: comment 
    model: Comment 

maintenant, dans executeNew() méthode de commentActions classe, ce code :

$this->getRoute()->getObject() 

retournera le premier objet Comment dans ma base de données. bien sûr, je peux créer manuellement un objet new Comment(), mais alors quel est l'avantage d'utiliser la classe sfDoctrineRoute au lieu de sfRoute?

Répondre

0

Dans le cas de executeNew, l'utilisation d'une route de doctrine présente peu ou pas d'avantages.

Considérons à la place la méthode executeEdit (mise à jour, suppression et affichage identiques).

Une URL pourrait ressembler:

/commentaire/5/modifier

(ou dans votre cas,/myusername/commentaires/5/modifier) ​​

$ this-> getRoute() -> getObject() retournera alors le commentaire 5 de la base de données - vous évitant ainsi de le charger (seulement une ligne ou 2 de code, mais quand même). Et, une caractéristique intéressante, s'il n'y a pas de commentaire 5 dans la base de données, il gère automatiquement cela et provoque une erreur 404 - donc vous n'avez pas à vous en préoccuper non plus.

+1

En ajoutant à la liste des pros, si vous décidez de basculer vers une URL slug, par exemple, il vous suffit de modifier certaines options de routage, au lieu de changer de code dans toutes vos actions. – Dziamid

+0

@dziamid un autre bon point, ta – benlumley

+0

Oui, vous avez raison .. merci beaucoup! :) btw, y at-il un moyen de l'empêcher de choisir n'importe quel enregistrement de mon db incase de executeNew? – tamir

Questions connexes