2012-01-12 2 views
0

У меня есть следующие в моем 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. Что вызывает ошибку?

Благодаря

EDIT: Выполнение $user['username'] устраняет проблему, но это не является идеальным, как мне нужно, чтобы объявить модель, как я хочу, чтобы получить доступ к другой информации, которая связана, например, $user['Profile']['firstname']

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

Мои отношения должны быть:

Array 
(
    [User] => Array 
     (
      [id] => 6 
      [username] => cameron 
      [password] => 3b8cdb0c849f00f3634d9b29def1dac4e9235795 
      [email] => [email protected] 
      [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] => [email protected] 
        [status] => 0 
        [code] => ea817b572e5199698274c7c0d61ee150 
       ) 

     ) 

) 

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

ответ

0

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

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

+0

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

0

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

$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

Я пытаюсь получить доступ к моей информации о пользователе для зарегистрированного пользователя. Я использую две таблицы для человека, и я не могу получить профиль пользователя, такой как firstname и т. Д., Поскольку он не запрашивает модель ... – Cameron

+0

И не забывайте, что вы можете получить доступ к информации Auth с помощью: '$ this-> Session-> read ('Auth.user.field_name')' в представлении. – Ross

+0

См. Обновленный ОП для разработки. – Cameron

4

Вы не получите информацию о профиле, делая $ 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') 
)); 
?> 

при условии, что ваш используете Containable поведение.

+0

Этот ответ верный. Я предполагаю, что так же, как и с вашими предыдущими вопросами, вы не можете правильно следовать и принимать его, поэтому я его поддержал. – swiecki

Смежные вопросы