Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/09/2011, 00h06   #1
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 2
Points : 2
Par défaut Petits problèmes avec Symfony

Bonsoir,

Voilà j'ai quelques questions sur certains points précis de Symfony et sur lesquels je bloque depuis un moment. Jusqu'à maintenant j'ai fais l’impasse dessus mais le projet avançant je ne peux plus me contenter d'ignorer ces problèmes

1) Les helpers use_javascript() et use_stylesheet()

J'utilise pas mal de plugins jQuery et cela devient l'anarchie dans mes dossiers /js et /css du dossier /web. Je voudrais créer un répertoire pour chaque plugin à la racine de /web. Mais pour que cela marche je suis obligé de faire (par exemple avec nivoslider) :

Code :
<?php use_stylesheet('../nivoslider/nivo-slider.css') ?>
Ce qui me donne un lien tout moche :

Code :
<link rel="stylesheet" href="/css/../nivoslider/nivo-slider.css" />
Il n'y a pas un moyen de faire ça plus proprement avec un fichier de configuration peut être ?

2) Autre problème plus important. J'utilise le plugin sfDoctrineGuardPlugin et je voudrais faire en sorte que lorsque le super administrateur poste une news celle-ci soit automatiquement activée. Pour ce faire, j'ai un champ boolean: is_activated avec default: 0. J'ai placé le code suivant dans l'action executeNew :

Code :
1
2
3
4
if ($this->getUser()->isSuperAdmin())
{
   $release->setIsActivated(true);
}
Avant l'insertion le champ is_activated vaut bien 1 mais après l'insertion il repasse à 0. J'imagine que c'est normal en l'état mais je ne vois pas ou placer ce code. Peut être en surchargeant la méthode save() ?

3) Est-ce qu'il est correct dans le modèle MVC de récupérer un paramètre $_GET dans une classe du modèle et, si oui, comment faire car $request->getParameter() ne marche pas ? (C'est pour une fonction de recherche/filtre qui utilise les données $_GET d'un formulaire en Ajax)


Voilà, j'ai bien conscience que cela fait beaucoup de questions d'un coup, mais j'aimerais si possible résoudre ces problèmes rapidement pour pouvoir continuer à avancer sereinement.

Merci d'avance
mika87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 07h54   #2
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 18
Points : 18
Points : 18
Bonjour,

Pour le 1)

Il me semble que tu peux faire:

Code :
<?php use_stylesheet('/mon-lien-vers-mon-css') ?>
ce qui donnera

Code :
<link rel="stylesheet" href="/mon-lien-vers-mon-css" />
Pour le 3)

Il faut utiliser

Code :
sfContext::getInstance()->getRequest()
mais je ne pense pas que se soit correct, essaye de passer par une méthode de ton model pour passer la variable.
thomas974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h49   #3
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 2
Points : 2
Merci pour ton aide.

Effectivement ça marche pour les helpers, il me semblait pourtant déjà avoir essayé comme ça mais sans succès... c'est peut être le cache qui m'a joué un mauvais tour !

Merci pour la piste du sfContext::getInstance()->getRequest(), pour l'instant j'utilise $_GET['mar_var'] donc c'est pas terrible non plus...
mika87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h21   #4
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 2
Points : 2
Je pense avoir trouvé la solution concernant la question 2, peut être pas idéale mais ça marche. J'ai placé le code dans la méthode processForm en rajoutant 2 conditions.

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
protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    { 
      $news = $form->getObject();
 
      /* Si c'est une nouvelle news */
      if ($news->isNew())
      {
        // Alors on récupère l'id du membre en session et le met dans le champ user_id
        $news->setUserId($this->getUser()->getUserIdFromSessData());
 
        // Si le membre qui a posté est Super Admin on met le champ is_activated a true
        if ($this->getUser()->isSuperAdmin())
        {
          $news->setIsActivated(true);
        }
      }
 
      $news = $form->save();
      $this->redirect($this->generateUrl('news_show', $news));
    }
  }
La méthode getUserIdFromSessData() est un raccourci de :

Code :
$this->getAttribute('user_id', null, 'sfGuardSecurityUser')

Voilà. L'avantage de cette technique c'est que je n'ai plus à mettre l'id du membre en champ caché dans mon formulaire. Est-ce que c'est bien de faire comme ça où il y a encore mieux ?
mika87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h21.


 
 
 
 
Partenaires

Hébergement Web