Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-04-2008 03:42:46

fetard
Membre
Date d'inscription: 08-04-2008
Messages: 21

Mélangeage de pinceaux avec Zend_Layout

Bonjour,
Débutant sur ZF, j'ai, comme tous les nouveaux sur le forum, potassé une tripotée de tutoriels sur Zend_View, Auth et Layout.

Je bloque cependant sur un problème tout bête : je travaille actuellement sur un back office, et je souhaite donc afficher un formulaire de login si l'utilisateur n'est pas connecté.

J'ai donc fait le controleur suivant :

Code:

<?php
class IndexController extends Zend_Controller_Action {

    public function indexAction()
    {
        $response=$this->getResponse();
        
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity())
             {
                 $identity = $auth->getIdentity();
            }
        else
        {
            $response->insert("content",$this->view->render("login.phtml"));
        }
    }
}
?>

et le layout.phtml suivant :

Code:

<?php echo $this->render('entete.phtml'); ?>
<?php echo $this->layout()->content ?>
<?php echo $this->render('pied.phtml'); ?>

(les entete et pied contiennent seulement du XHTML basique).

Mon problème est que quand je vais sur mon /, il m'affiche bêtement par défaut index/index.phtml et ne veut encore moins entendre parler de login.phtml (quil reconnait pourtant, vu que ZF me renvoie une superbe erreur si je le renomme).

J'ai du rater qqc de très visible, mais je ne sais pas quoi hmm (bon, à 3h40 du matin, aussi....)

Donc n'hésitez pas à me corriger smile

Merci d'avance

Hors ligne

 

#2 08-04-2008 08:22:46

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Mélangeage de pinceaux avec Zend_Layout

Dans le bootstrap, tu met :

Code:

$options = array(
        'layout'     => 'layout',
        'layoutPath' => './app/views'
);
Zend_Layout::startMvc($options);

et dans ton action tu fais :

Code:

public function indexAction()
{
       ...
       $this->render('login');
}

Le Zend_Layout va alors automatiquement rendre login.phtml dans le segment 'content' que tu as défini dans ton fichier layout

Dernière modification par or4cle (08-04-2008 08:23:37)

Hors ligne

 

#3 08-04-2008 09:28:40

fetard
Membre
Date d'inscription: 08-04-2008
Messages: 21

Re: Mélangeage de pinceaux avec Zend_Layout

Merci or4cle, mais utiliser $this->render me fait perdre l'avantage de Zend_Layout, à savoir les sections nommées (j'ai un $this->layout()->content dans ma vue).

Hors ligne

 

#4 08-04-2008 09:56:41

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Mélangeage de pinceaux avec Zend_Layout

scuse moi mais le Zend_Layout s'utilise comme çà...
$this->render('xxx') rend auto la vue dans le champ par défaut "content" si on ne l'a pas redéfinit autrement dans la config du zend_layout

si tu veux rendre la vue dans un autre segment, alors :

$this->render('xxx', 'toto')
avec toto un segment que tu aura ajouté qq part dans dans ton layout

$this->layout()->toto

Hors ligne

 

#5 08-04-2008 10:10:01

fetard
Membre
Date d'inscription: 08-04-2008
Messages: 21

Re: Mélangeage de pinceaux avec Zend_Layout

Au final j'ai un controleur comme ceci :

Code:

<?php
class IndexController extends Zend_Controller_Action {

    public function indexAction()
    {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity())
             {
                 $identity = $auth->getIdentity();
            }
        else
        {
            
            $this->render("login");
        }
    }
}
?>

Mon erreur était de spécifier une cible "content" alors que vu que c'est celle par défaut, cela ne marche pas smile
Si je ne spécifie pas "content", ca affiche bien mon résultat.

Merci merci smile

(je pense que ce n'est pas la dernière question que je poserais ici hmm)

Hors ligne

 

#6 08-04-2008 13:40:37

fetard
Membre
Date d'inscription: 08-04-2008
Messages: 21

Re: Mélangeage de pinceaux avec Zend_Layout

Par contre, $this->render ne permet que d'inclure des fichiers existants, mais pour insérer un $form ?

Hors ligne

 

#7 08-04-2008 13:48:52

or4cle
Membre
Date d'inscription: 18-02-2008
Messages: 70

Re: Mélangeage de pinceaux avec Zend_Layout

j'ai pas encore beaucoup créusé Zend_Form
je fais comme ici dans le seul form de test que j'ai fait =>
http://akrabat.com/2008/02/21/simple-zend_form-example/

Hors ligne

 

#8 08-04-2008 15:16:22

fetard
Membre
Date d'inscription: 08-04-2008
Messages: 21

Re: Mélangeage de pinceaux avec Zend_Layout

Bon finalement, avec le controleur suivant ca marche :
class IndexController extends Zend_Controller_Action {

    public function indexAction()
    {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity())
             {
                 $identity = $auth->getIdentity();
            }
        else
        {
        $form = new forms_LoginForm();
        $this->view->form = $form;
        }
    }
}

En foutant LoginForm.php dans models/forms (LoginForm.php contenant class forms_LoginForm extends Zend_Form)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages