Utilisation de sfDoctrineRouteCollection
Bonjour,
Je me documente un peu sur sfDoctrineRouteCollection, et je suis tombé sur ce topic :
http://www.developpez.net/forums/d92...s/#post5203362
On y parle de l'option "model_methods" :
Citation:
Code:
1 2 3 4 5 6 7 8 9 10 11
| produit:
class: sfDoctrineRouteCollection
options:
model: produit
module: produit
prefix_path: /produit
column: idProduit
with_wildcard_routes: true
model_methods:
list: <getMaListe>
object: <getMonObjet> |
<getMaListe> (qui peut être omis si la méthode par défaut donne satisfaction) doit retourner une doctrine_collection des objets à afficher dans la liste
<getMonObjet> doit retourner un objet du model qui correspond à l'objet recherché et est utilisé pour les edit et show (si show est utilisé).
J'utilise ces méthodes pour vérifier, dans le cas d'un blog par exemple, si l'utilisateur à bien les droits pour modifier l'article et que la liste des articles ne concerne que les articles de l'utilisateur. Un foward404 permet de résoudre les tentatives de piratage avant même que l'action ne soit appelée
Je me trouve dans le cas d'un blog justement.
Je voudrais savoir comment s'y prendre pour vérifier "si l'utilisateur à bien les droits pour modifier l'article et que la liste des articles ne concerne que les articles de l'utilisateur".
Les model_methods font référence a des méthodes du fichier model/postTable.class.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?php
/**
* Post
*
* This class has been auto-generated by the Doctrine ORM Framework
*/
class PostTable extends Doctrine_Table
{
/**
* Returns an instance of this class.
*
* @return object PostTable
*/
public static function getInstance()
{
return Doctrine_Core::getTable('Post');
}
public function getMonObjet() {
// Requete de selection du POST avec l'id du membre en paramètre
// Si aucun résultat trouvé, c'est soit parce que le Post n'existe pas ou soit parce que ce n'est pas le POST de l'user
// Mais comment accéder à l'id du membre dans CETTE méthode ? Impossible.
}
} |
Est-ce que quelqu'un peut m'éclairer ? Merci