Неопределенная ошибка индекса при показе авторизованной информации о пользователе - PullRequest
0 голосов
/ 13 января 2012

В моем AppController есть следующее:

function beforeRender()
{
    $this->set('user', $this->Auth->user());
}

и затем я показываю информацию о пользователе так:

<?php echo $user['User']['username']; ?>

но выдает ошибку:

Undefined index: User [APP/View/Layouts/default.ctp, line 46]

Я использую CakePHP 2.0. Что является причиной ошибки?

Спасибо

РЕДАКТИРОВАТЬ: Выполнение $user['username'] устраняет проблему, но это не идеально, поскольку мне НУЖНО объявить модель, поскольку я хочу получить доступ к другой информации, которая связана, например, $user['Profile']['firstname']

Если я debug($user), я получаю информацию, но не правильно, так как я не могу указать модель и получить отношения (которые работают так, как я их использую в другом месте).

Мои отношения ДОЛЖНЫ БЫТЬ:

Array
(
    [User] => Array
        (
            [id] => 6
            [username] => cameron
            [password] => 3b8cdb0c849f00f3634d9b29def1dac4e9235795
            [email] => cameron@driz.co.uk
            [status] => 0
            [code] => ea817b572e5199698274c7c0d61ee150
        )

    [Profile] => Array
        (
            [id] => 1
            [firstname] => Cameron
            [lastname] => Drysdale
            [gender] => Male
            [dob] => 1987-06-26
            [bio] => <p>I'm the developer of this application.</p>
            [user_id] => 6
            [User] => Array
                (
                    [id] => 6
                    [username] => cameron
                    [password] => 3b8cdb0c849f00f3634d9b29def1dac4e9235795
                    [email] => cameron@driz.co.uk
                    [status] => 0
                    [code] => ea817b572e5199698274c7c0d61ee150
                )

        )

)

но когда я пытаюсь получить информацию о зарегистрированном пользователе, я получаю только первый массив

Ответы [ 3 ]

4 голосов
/ 13 января 2012

Вы не получите информацию профиля, используя $ this-> Auth-> user (), только данные модели пользователя.Для того, что вы собираетесь делать, вам может понадобиться что-то подобное в вашем app_controller:

<?php
$this->loadModel('User');
$this->User->find('first', array(
    'conditions' => array('User.id' => $this->Auth->user('id')),
    'contain' => array('Profile', 'OtherRelatedModels')
));
?>

при условии, что вы используете сдерживаемое поведение.

0 голосов
/ 13 января 2012

Я не понимаю, чего вы пытаетесь достичь, но это:

$u=array();
$u['User'] = $this->Auth->user();
$this->set('user', $u);

производит:

Array
(
    [user] => Array
        (
            [User] => Array
                (
                    [id] => 1
                    [username] => admin
                    [role] => admin
                    [etc] => etc...

позволяет

echo $user['User']['id'] и т. Д. На работу.

но, возможно, сложный; Я ожидаю, что есть альтернативный способ добиться того, что вы хотите, так как метод Auth->user() просто возвращает информацию о текущих пользователях, которую вы указали при входе (более или менее)

0 голосов
/ 13 января 2012

Эта ошибка вызвана тем, что $user['User'] не существует.Этот ключ / индекс не отображается в массиве $user.

Выполните var_dump() на $user, чтобы посмотреть, что в нем содержится, прежде чем пытаться получить доступ к $user['User']['username'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...