У меня есть таблицы:
users
(модельUser
) - id, person_id, логин, парольpeople
(модельPerson
) - id, parent_id (внешний ключ той же таблицы), last_name, first_nameaddresses
(Address
) - id, person_id, улица, город
И, модели:
class User extends AppModel {
public $actsAs = array('Containable');
public $belongsTo = array(
'Person'
);
}
class Person extends AppModel {
public $belongsTo = array(
'Parent' => array(
'className' => 'Person',
'foreignKey' => 'parent_id',
),
);
public $hasMany = array(
'User',
'Address',
'Subordinate' => array(
'className' => 'Person',
'foreignKey' => 'parent_id',
),
);
}
class Address extends AppModel{
public $belongsTo = array(
'Person'
);
}
Представления в папке View/Users/
:
register.ctp
login.ctp
logout.ctp
profile.ctp
После регистрации и входа мне нужно показать данные профиля. Для этого я использую следующую функцию inUsersController
:-
public function profile() {
$this->set('userProfile', $this->Auth->User());
}
У меня есть следующее в profile.ctp
:
<table>
<tr>
<th>Username </th>
<th>First Name </th>
<th>Last Name </th>
<th>street</th>
<th>house_no</th>
</tr>
<?php foreach ($userProfile as $profiledata){ ?>
<tr>
<td><?php echo $profiledata['username']; ?> </td>
<td><?php echo $profiledata['Person']['first_name']; ?> </td>
<td><?php echo $profiledata['Person']['last_name']; ?> </td>
<td><?php echo $profiledata['Person']['Address']['street']; ?> </td>
<td><?php echo $profiledata['Person']['Address']['house_no']; ?> </td>
</tr>
<?php } ?>
</table>
компонент авторизации в AppController.php
public $components = array(
'DebugKit.Toolbar',
'Session',
'Flash',
'Auth' => array(
'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
'authenticate' => array('Form' => array(
'contain' => array('Person'=>'Address'),
'passwordHasher' => 'Blowfish'))
)
);
он может извлекать данные из таблиц пользователей и людей, но не из таблицы адресов.
Я получаю следующую ошибку:
Notice (8): Undefined index: street [APP\View\Users\profile.ctp, line 32]
Может ли кто-нибудь сказать мне, что здесь не так? Нужно ли мне создавать другую модель для профиля (Profile.php
) для отображения данных профиля?
debug($userProfile)
илиprint_r($userProfile)
покажет, что структура переменной несовместима с вашим цикломforeach
. - person drmonkeyninja   schedule 04.02.2016