IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Utilisation de "component" et "slot" [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut Utilisation de "component" et "slot"
    Bonjour,

    Ca va pas être simple à expliquer sans schéma mais je vais essayer.

    J'ai un site dans lequel j'ai un menu à gauche, un corps, un en-tête et un pied de page.
    L'en-tête, le menu et le pied de page vont dans le layout, pour ça pas de problème.
    Le corps va dans chaque module, j'ai fait un slot('page') dans mon layout et dans chaque indexSuccess de mes modules je défini le slot.

    Ma première question, vous la devinez : est-ce que l'utilisation d'un slot est bien adaptée pour ce que je fais? Sachant que pour l'instant ca se passe bien, mais je peux arriver à un point de bloquage et j'ai pas envie de revenir en arrière et tout refaire dans 2 mois.

    Deuxième question :
    Sur ce même site j'ai une partie en haut à droit qui sert à authentifier les utilisateurs sachant que cette partie doit apparaitre tout le temps sur chaque page et nécessite des traitements (vérification dans la base si l'utilisateur existe), bref comment afficher un module qui contiendra un formulaire d'authentification dans une partie de ma page?

    Merci pour les nombreuses solutions que vous allez me proposer! ;-)

  2. #2
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    Ma première question, vous la devinez : est-ce que l'utilisation d'un slot est bien adaptée pour ce que je fais? Sachant que pour l'instant ca se passe bien, mais je peux arriver à un point de bloquage et j'ai pas envie de revenir en arrière et tout refaire dans 2 mois.
    http://www.symfony-project.org/book/...r_07_sub_slots

    cela répond tout à fait à ton besoin, c'est même fait pour.

    Deuxième question :
    Sur ce même site j'ai une partie en haut à droit qui sert à authentifier les utilisateurs sachant que cette partie doit apparaitre tout le temps sur chaque page et nécessite des traitements (vérification dans la base si l'utilisateur existe), bref comment afficher un module qui contiendra un formulaire d'authentification dans une partie de ma page?
    dans un premier temps, fais ton module comme si de rien n'était. avec
    un formulaire et les traitements adéquates; si tu veux que cette partie
    reste sur la page, appelles-la depuis le layout, comme tu l'as déjà fait
    pour tes autres parties ! utilisez AJAX pour rafraichir uniquement le
    cadre de login.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Le corps va dans chaque module, j'ai fait un slot('page') dans mon layout et dans chaque indexSuccess de mes modules je défini le slot.
    En théorie tu n'as pas besoin de slot si tu passes par tes modules, le template associé a ton action sera automatiquement publié. Par example tu as un module forum et une action index et bien tu n'as qu'a créer le template index.php dans ton dossier view.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo $sf_content ?>
    qui se trouve dans ton layout se chargera de publié ton template.

    Comme le dit bricecol tu peux le laisser dans ton layout cela dit je te conseille d'utiliser un partial, ca sera plus propre.

  4. #4
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    Comme le dit bricecol tu peux le laisser dans ton layout cela dit je te conseille d'utiliser un partial, ca sera plus propre.
    oui bien sûr, je ne pense même plus à le dire mais oui, on inclue toujours via un partial ou autre, jamais directement dans le layout...

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    euhhh!! merci pour ces réponses du coup je suis un peu perdu!!!

    Je reprends mon cas :

    Dans mon layout j'ai un include_slot('page');

    toujours dans mon layout j'ai un menu avec des liens vers mes modules par exemple url_for('news/index');
    dans mon module news pour la page indexsucess j'ai définie un slot page dans lequel je mets le contenu de ce que je veux afficher.

    A ce que j'ai compris de ce que vous dites mon choix de slot n'est pas le plus judicieux, il vaux mieux que j'utiliser le $sf_content de base.

    Donc pour ce cas c'est bon j'ai modifié. Première question résolu

    Maintenant la deuxième pour mon encars login.

    Toujours sur ma page layout je faisait appel à un partials de mon module login include_partial('login/auth');

    Ce qui entraine la création dans mon module d'un fichier _auth.php dans lequel je veux mettre mon formulaire. Mais premier problème j'ai pas accès à ma varialble $form que j'ai créer dans mon login/actions.class.php
    Deuxième problème j'ai vu dans la doc d'utilisation des partials qu'on doit passer par l'index pour attribuer les variables au partials.

    étant donné que je fait appel à mon fichier auth et non pas index je ne peux pas passer de variable donc le partial ne doit pas être la meilleur solution.
    Le slot quand à lui doit être défini sur les indexsuccess appelés....

    Bref je ne sais plus quoi faire!!!!!

    Mon besoin d'origine c'est d'avoir un encars avec un formulaire pour s'authentifier. Il doit apparaitre sur chacune des pages et suivant l'action d'authentification je dois afficher le formulaire si la personne n'est pasconnecté sinon un message de déconnexion si elle est connecté.
    Sachant que suivant cet état (connecté/déconnecté) le menu n'aura pas les mêmes liens.

    Merci encore pour votre aide.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Je ne suis pas sur de bien comprendre ton probleme. Peux-tu poster ton partial auth?

  7. #7
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Ci dessous le contenu de mon fichier _auth du module login.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <table cellspacing="0" border="0">
     
    	<tr>
     
    		<td>
     
    		<div id="login" class="login" align="left">
     
    		<form method="POST" action="<?php url_for('login/index'); ?>">
     
    		<table cellspacing="0" border="0">
     
    			<tr>
     
    				<td colspan="2"><?php echo $form['email']->renderLabel(); ?></td>
     
    			</tr>
     
    			<tr>
     
    				<td><?php //$form['email']; ?></td>
     
    			</tr>
     
    			<tr>
     
    				<td colspan="2"><label> Mot de passe </label></td>
     
    			</tr>
     
    			<tr>
     
    				<td><input type="password" name="mdp" size="19"
    					style="border-width: 0px" /></td>
     
    				<td><input type="submit" name="valid" value="OK" /></td>
     
    			</tr>
     
    			<tr>
     
    				<td colspan="2"><a href="">Inscription</a>
     
    				&nbsp;|&nbsp; <a href="">Oublié ?</a></td>
     
    			</tr>
     
    	</table>
    		</form>
    		</div>
    		</td>
    	</tr>
    </table>


    Dans mon action j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function executeIndex(sfWebRequest $request)
      {
       $this->form = new LoginForm();
    }
    et dans mon layout :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include_partial('login/auth') ?>

    Mais si je fais ca j'ai un message d'erreur :

    Notice: Undefined variable: form in D:\monprojet\apps\frontend\modules\login\templates\_auth.php on line 15
    Et si je commente la ligne j'ai bien le contenu qui s'affiche!!!

    Donc comment accéder à mes variables?

  8. #8
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    Notice: Undefined variable: form in D:\monprojet\apps\frontend\modules\login\templates\_auth.php on line 15
    je ne comprends pas, c'est plutôt clair comme message. où as-tu placé ton fichier _auth.php ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Shell][sed]utilisation d'un sed pour gérer des doubles quotes
    Par bstevy dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 06/03/2015, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo