Есть ли простой способ получить данные пользователя AuthComponent из представления в CakePHP? - PullRequest
7 голосов
/ 30 мая 2009

Согласно разделу "Cakebook " для компонента Auth , я могу реализовать простую аутентификацию с помощью следующего контроллера Users:

class UsersController extends AppController {

    var $name = 'Users';    
    var $components = array('Auth'); // Not necessary if declared in your app controller

    /**
     *  The AuthComponent provides the needed functionality
     *  for login, so you can leave this function blank.
     */
    function login() {
    }

    function logout() {
        $this->redirect($this->Auth->logout());
    }
}

Я бы хотел иметь что-то вроде следующего на мой взгляд:

<?php
   $username = $auth->user('username');
   echo "Welcome " . $username;
?>

Есть ли простой способ сделать это, или мне нужно перезаписать функцию входа в систему и сохранить имя пользователя в сеансе?

Обновление

Александр ответ именно то, что я хотел. Однако я добавлю следующее на случай, если кто-то запутается, как я.

Мне потребовалось некоторое время, чтобы понять, что если вы измените модель, которую использует Auth (например, у вас может быть таблица «персон» вместо «пользователей»), вам нужно будет использовать что-то вроде:

$persondata = $session->read('Auth.Person');

Ответы [ 4 ]

12 голосов
/ 30 мая 2009

На самом деле эта информация легко доступна из сессии. Вы используете помощник сессии, чтобы захватить это. Я считаю, что правильный синтаксис:

$userdata = $session->read('Auth.User');
$username = $session->read('Auth.User.username');

EDIT:

Для CakePHP 2.X и по синтаксису:

$userdata = $this->session->read('Auth.User');
$username = $this->session->read('Auth.User.username');
3 голосов
/ 30 мая 2009

Ознакомьтесь с методами AuthComponent в руководстве CakePHP ....

Вы можете получить доступ к информации о пользователе после того, как пользователь вошел в систему из сеанса через $ this-> Auth-> User (). Поэтому, если вам нужно имя пользователя, просто используйте его в контроллере.

$ this-> set ('username', $ this-> Auth-> User ('username'));

Теперь вы можете использовать $ username в представлении.

2 голосов
/ 30 мая 2009

Добавьте метод в свой AppController

function beforeFilter() {
$ath = $this->Auth->user();
$this->set('userDetails', $ath['User']);
}

И затем вы можете получить к нему доступ из ваших представлений и / или макетов через $ userDetails

0 голосов
/ 31 мая 2009

Чтобы получить доступ к параметрам Auth в представлениях, просто сделайте это:

echo $session->read('Auth.User.id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...