J'ai suivi le tuto de création d'un site en quatre jours et je me posais une question.
J'ai crée un élèment d'authentification que j'appelle dans mon footer de cette maniére

<?php echo $this->element('connection'); ?>

sachant que le footer est lui aussi un élèment.
Cependant comment est-il possible de gérer cette authentification sachant qu'il n'est pas lié à un modèle spécifique ?
Pour faire simple, j'aimerais intercepter la validation de ce formulaire dans toutes les pages du site.

6 réponses


zenkiai
Réponse acceptée

essaye comme ceci en ajoutant le controller et l'action dans le create :

<?php echo $this->Form->create('User', array(
                'url' => array(
                        'controller' => 'users',
                        'action' => 'login')
                        )
                    );

Tu n'as pas de Model User qui gère la validation de ton authentification ?

Oui j'ai un modèle User, mais je dois donc appeler ce modèle dans tous les autres modèles, il n'y a pas de risque de lourdeur?

Mais lorsque tu fais appel à ton formulaire d'authentification tu crées bien un formulaire qui appel le model User.

<?php echo $this->Form->create('User'); ?>

ouaip

<div class="row-fluid" >
    <?php echo $this->Form->create('User'); ?>
    <div class="span12" style="margin-left:10px">
        <br>
        <div class="input-prepend" >    
            <span class="add-on"><i class="icon-user icon-large"></i></span>
                <?php echo $this->Form->input('username', array('label' => false,"placeholder"=>"Login", "id"=>"username", "required", "class" =>"span9", "div" =>false)); ?> 
        </div>  
    </div>

    <div class="span12" style="margin-left:10px">   
        <div class="input-prepend">
            <span class="add-on"><i class="icon-key icon-large"></i></span>
                <?php echo $this->Form->input('password', array('label' => false,"placeholder"=>"Mot de passe", "id"=>"password","required", "class" =>"span9", "div" =>false)); ?>
        </div><br>  
    </div>
    <div style="margin-left:10px">
    <?php echo $this->Form->end("Se connecter"); ?></div>
</div>

ça c'est mon élèment connection.ctp
Le problème c'est que dans mon controleur UsersController, il y a une fonction login(). J'aimerais donc que quand j'appuye sur "Se connecter", la fonction login() soit prise en compte que je sois sur tous les controleurs disponibles vu que l'élèment est dans le footer.

rahhhh, merci (quel idiot, je n'y avais pas pensé).
Je te remercie, maintenant il ne me reste plus qu'à mettre les conditions, changer le beforeFilter et c'est bon.
Merci beaucoup