Question

Je viens tout juste de commencer à travailler avec Laravel.Super cadre jusqu'à présent!Cependant j'ai une question.

J'utilise un modèle de mise en page comme celui-ci :public $layout = 'layouts.private';

Ceci est défini dans mon Base_Controller :

public function __construct(){

    //Styles
    Asset::add('reset', 'css/reset.css');
    Asset::add('main', 'css/main.css');

    //Scripts
    Asset::add('jQuery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js');

    //Switch layout template according to the users auth credentials.
    if (Auth::check()) {
        $this -> layout = 'layouts.private';
    } else {
        $this -> layout = 'layouts.public';
    }

    parent::__construct();

}

Cependant, j'obtiens maintenant une exception d'erreur lorsque j'essaie d'accéder aux fonctions de mes différents contrôleurs, qui ne doivent appeler aucune vue, c'est-à-direlorsqu'un utilisateur va se connecter :

class Login_Controller extends Base_Controller {

public $restful = true;

public function post_index()
{

    $user = new User();
    $credentials = array('username' => Input::get('email'), 'password' => Input::get('password'));

    if (Auth::attempt($credentials))
    {

    } else {

    }

}

}

L'erreur que j'obtiens est que je ne définis pas le contenu des différentes variables dans mon $layout public.Mais comme aucune vue n'est nécessaire dans cette fonction, comment dire à Laravel de ne pas inclure la mise en page dans cette fonction ?

La meilleure solution que j'ai moi-même trouvée (je ne sais pas si c'est une mauvaise voie ?) est de unset($this -> layout); de la fonction post_index()...

Pour résumer ma question :comment puis-je dire à Laravel de ne pas inclure public $layout dans certaines fonctions, où une vue n'est pas nécessaire ?

Merci d’avance, Fischer

Était-ce utile?

La solution

Vous devez définir $this->layout = null sur n'importe quelle fonction pour laquelle vous ne souhaitez pas afficher la vue.

Autres conseils

Si une vue n'est pas nécessaire, il devrait s'agir d'une redirection.Que se passe-t-il d'autre dans votre méthode de connexion ?

Ce que vous devriez faire, c'est afficher un formulaire de connexion sur la page de connexion GET.Cette page publie sur la page de connexion POST où vous effectuez la validation et l'authentification.Indépendamment de ce qui se passe au niveau d'authentification, l'utilisateur doit alors être redirigé vers une requête GET où une autre vue sera affichée.Ce sera soit le formulaire de connexion à nouveau en cas d'échec, soit leur panneau de contrôle/page d'accueil.

Il s'agit d'un modèle de développement Web appelé Publier/Redirection/Obtenir et devrait être appliqué dans la plupart des cas.Je ne vois pas de cas où vous l'appliqueriez.

Dans votre méthode, aucune vue n'est nécessaire, mais vous devez toujours rediriger en tant que telle.

return Redirect::to('wherever');

N'oubliez pas que vous devez retour la redirection ou Laravel supposera que vous souhaitez utiliser votre mise en page comme réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top