Venez baraguiner avec la communauté !
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'ai un petit soucis avec le plugin de Symfony sfGuardUser.
J'ai suvi le README du plugin et j'ai pu accédé à http://<DNS>/backend_dev.php/sf_guard_user qui me donne les informations de la table sf_guard_user. Dans ces informations j'ai des utilisateurs qui sont admins et d'autres qui ne le sont pas.
Ce que je voudrais c'estne pas passer par une page d'un module mais par une page du backend pour avoir une URL de type http://<DNS>/backend_dev.php/Module/Action qui me retourne uniquement les utilisateurs étant admin.
J'ai regarder plusieurs site, essayer plusieurs méthodes mais sans succès et je suis en train de tout mélanger.
Le mieux que j'ai pu faire c'est
public function executeIndex(sfWebRequest $request)
{
$this->admin = Doctrine_Query::create()
->select('username')
->from('sfGuardUser')
->where('is_super_admin = TRUE')
->execute();
}mais ça me renvoie comme résultat
Doctrine_Collection data : Array( 0 : Object(sfGuardUser) 1 : Object(sfGuardUser) 2 : Object(sfGuardUser) 3 : Object(sfGuardUser) )
J'ai aussi essayer
$this->getUser()->getGuardUser()->getProfile()->getUsername();
mais ça me retourne une erreur
Je vous remercie si quelqu'un à une piste pour m'éclairer.
Cordialement.
Hors ligne
Hello,
$this->getUser()
Ça n'a rien à voir avec une table user dans ta base de données, en fait $this->getUser() pour t'éclaircir un peu c'est la session courante d'un utilisateur (ou visiteur) ^^ On pourrait presque dire que ça équivaut à $_SESSION, mais adapté en POO sur symfony
!
Dans les actions, tu peux stocker des sessions, par exemple comme ceci:
$this->getUser()->setAttribute("age", 30);Et les récupérer comme ça:
$age = $this->getUser()->getAttribute("age");En fait on pourrait faire la même chose en PHP simple comme ceci:
$_SESSION['age'] = 30;
Dans le template, on remplace $this->getUser() par $sf_user, c'est le système de Symfony qui le veut (class action / templates ...)
$age = $sf_user->getAttribute("age");Avec sfGuardUser() maintenant, quand un utilisateur se log, le plugin enregistre l'objet user en session comme ça tu peux récup ce que tu veux de l'utilisateur connecté ! Le plugin à même créé un raccourci pour le récupérer, sans utiliser getAttribute, comme ceci:
$this->getUser()->getGuardUser()
Donc pour obtenir le nom de l'utilisateur connecté:
$this->getUser()->getGuardUser()->getUsername()
(regarde bien la doc du plugin, l'onglet "readme", il t'explique pas mal de chose pour l'utiliser http://www.symfony-project.org/plugins/sfGuardPlugin)
Donc là par contre ça va pas te lister des utilisateur, juste retourner le nom du gas en session, pas vraiment ce que tu veux!
Ta première méthode fonctionne !
(en passant un code plus propre:)
public function executeIndex(sfWebRequest $request)
{
$this->admins = Doctrine_Query::create()
->select('u.username AS username')
->from('sfGuardUser u')
->where('u.is_super_admin IS NOT NULL')
->execute();
}Elle retourne une collection de nom d'admins, car tu utilises la méthode execute() ! Ce qui veut dire qu'il faudra faire une boucle pour tous les afficher:
Dans le template:
foreach ($admins as $admin)
{
echo $admin->username;
}Le message doctrine retourné, c'est parce que tu as dû faire un echo de la collection sans boucler (est-ce que tu ferais un echo sur un array ? non), qui te retourne ce qu'elle contient, cela affiche tous les admins contenu dans la collection. La preuve:
Array( 0 : Object(sfGuardUser) 1 : Object(sfGuardUser) 2 : Object(sfGuardUser) 3 : Object(sfGuardUser)
Enfin ça te servira certainement: si tu veux juste retourne un seul admin, il ne faut pas utiliser execute(), mais fetchOne() ! Dans ce cas ton code actuel fonctionnera, par contre tu n'auras pas une liste d'admins, juste un seul, le premier trouvé par doctrine 
J'espère que ça t'as un peu éclairé ! ^^
Hors ligne
Super Sybio
Non seulement c'est beaucoup plus clair et en plus ça fonctionne !
Je m'étais bien trompé quand même.
Merci à toi Sybio.
Hors ligne
bonjour pour tous les monde je suis debutant en frame work symfony j'ai besion des vos aides
Hors ligne
Pages: 1