Question

Je suis assez nouveau pour CodeIgniter et j'utilise Ion Auth pour l'autorisation de l'utilisateur. Avec la bibliothèque Ion Auth, vous obtenez un objet utilisateur comme:

  $user = $this->ion_auth->get_user();
  echo $user->email;

Si un utilisateur est connecté, je veux l'objet utilisateur $ soit disponible sur l'une des pages (dans l'un des contrôleurs). Comment puis-je faire ceci? (J'utilise CodeIgniter 2)

Était-ce utile?

La solution

Ce billet de blog de la mine va dans beaucoup de détails en utilisant spécifiquement Ion_Auth pour permettre à votre application entière (y compris les vues) pour accéder aux informations de votre utilisateur.

La version courte ... (en particulier pour le sujet à portée de main)

L'ajout de ce fichier à votre MY_Controller.php

class User_Controller extends CI_Controller {

    protected $the_user;

    public function __construct() {

        parent::__construct();

        if($this->ion_auth->logged_in()) {
            $data->the_user = $this->ion_auth->get_user();
            $this->the_user = $data->the_user;
            $this->load->vars($data);
        }
        else {
            redirect('/');
        }
    }
}

Ensuite, dans votre application il suffit de créer votre contrôleur comme ceci

class App_Controller extends User_Controller {

    public function __construct() {
        parent::__construct();
    }

    function index() {
        //do stuff
    }
}

Alors, non seulement dans votre contrôleur vous avez accès à $this->the_user mais vous aurez également $the_user chargé dans toutes les vues avec $this->load->vars()

Autres conseils

Normalement, vous auriez cache quelque chose comme ça dans la session, mais je suis passé loin de que dans la plupart de mes applications de CI.

Un exemple: vous vous connectez l'utilisateur (la mise en cache les données utilisateur) et puis ils vont mettre à jour leurs e-mails sur leur page de profil. Vous devez maintenant vous recharger le cache. Beaucoup d'autres choses pourraient conduire ce reload. Habituellement, le plus je en cache plus est l'ID, alors je fais ce que vous faites et obtenir les données de l'utilisateur sur une page je en ai besoin.

Une chose que je trouve qui aide est d'avoir contrôleurs de base . Par exemple, j'ai un RegisteredUserController. Tout contrôleur dont les actions exigent tous que l'utilisateur soit connecté prolonger ce. De cette façon, je peux garder le contrôle et connecté des choses comme obtenir les données de l'utilisateur dans un seul endroit (dans le constructeur). Par exemple:

class RegisteredUserController extends CI_Controller {
    var $user;

    function  __construct()  {
        parent::__construct();
            $this->user = $this->ion_auth->get_user();
        }
}

Ensuite, un contrôleur qui s'étend RegisteredUserController au lieu de contrôleur juste peut obtenir à l'utilisateur avec $this->user. À la suite de ce modèle obtiendrait sur chaque page (qui étend le contrôleur) sans avoir recours à la mise en cache.

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