cakephp2 не может отображать данные из содержимого

Я разрабатываю веб-приложение, используя торт PHP 2.

У меня проблема при отображении данных из 2 таблиц …

Мои модели:

<?php

class Discipline extends AppModel{

public $hasMany = "Student";
}

?>

<?php

class Student extends AppModel{

public $belongsTo = array(
"Discipline" => array(
"className" => "Discipline",
"foreignKey" => "discipline_id")
);

}

?>

Вот мой студенческий контроллер:

<?php
class StudentsController extends AppController{

function admin_index(){
if($this->request->is('put') || $this->request->is('post')){
$student = $this->request->data['Student'];
if($this->Student->save($this->request->data)){
$this->Session->setFlash("L'eleve a bien été modifié","notif");
}
}
$d['student'] = $this->Student->find('all',array(
'contain' => "Discipline"));
$this->set($d);
}
}

Я пытаюсь отобразить данные студента, используя это представление:

<?php

foreach($student as $k => $v){
$v = current($v);

echo "<td>Action</td>";
echo "<td>Label</td>";
echo "<td>".$v['nom']." ".$v['prenom']."</td>";
echo "<td>".$v['sexe']."</td>";
echo "<td>".$v['naissance']."</td>";
echo "<td>".$v['Discipline']['designation']."</td>";
echo "<td>".$v['comite']."</td>";
echo "<td>".$v['classe']."</td>";
echo "<td>".$v['elite']."</td>";
echo "<td>".$v['alerte']."</td>";
echo "<td>".$v['quota1']."</td>";
echo "<td>".$v['quota2']."</td>";
echo "<td>".$v['total']."</td>";
echo "<td>Pris</td>";
echo "<td>Restant</td>";
echo "<td>Supp</td>";


}

?>

Но у меня есть проблема в этой строке:

 echo "<td>".$v['Discipline']['designation']."</td>";

Это говорит об этой ошибке:

notice (8): Undefined index: designation [APP\View\Students\admin_index.ctp, line 47]

Я привык к разработке на cakephp 3, и меня довольно смущает эта ошибка … что делать, чтобы отобразить данные из таблицы дисциплин в виде моего студента?

Любая идея ? Спасибо

РЕДАКТИРОВАТЬ: я сделал отладку на моем StudentController, и я нашел данные, которые я хочу отобразить:

array(
'student' => array(
(int) 0 => array(
'Student' => array(
'id' => '2',
'prenom' => 'Jean',
'nom' => 'Michel',
'sexe' => '1',
'naissance' => '2015-08-02',
'age' => '12',
'classe' => '1',
'discipline_id' => '1',
'comite' => 'test',
'categorie' => 'test',
'elite' => true,
'alerte' => 'test',
'quota1' => '12',
'quota2' => '12',
'total' => '24',
'note' => 'tete'
),
'Discipline' => array(
**'id' => '1',
'designation' => 'Alpin'**
)
)
)
)

0

Решение

я думаю, что вы должны изменить мнение

Изменить:

foreach($student as $k => $value){
$v = current($value);

чтобы:

foreach($student as $k => $v){
$v = current($v);

и изменить:

echo "<td>".$v['Discipline']['designation']."</td>";

в

echo "<td>".$value['Discipline']['designation']."</td>";

Вы перезаписываете переменную $ v первым найденным массивом, поэтому $ v будет $ v [‘Student’]

Я для себя не буду использовать current для входа в массив для CakePHP, но везде использую $ v [‘Student’]

0

Другие решения

Других решений пока нет …