Ну, мне удалось найти решение этой проблемы. Я ждал, чтобы увидеть, найдет ли кто-нибудь что-то лучше, так как я почти уверен, что мое решение далеко не самое лучшее, но здесь, если кто-нибудь найдет этот вопрос в будущем.
Моя проблема была в том, что мне было нужно, для каждой группы, которую я выбрал для регистрации помощи:
- Каждый студент , принадлежавший к этой группе
- Все помощь студентов, принадлежащих к этой группе
Теперь, чтобы использовать Помощник по формам для редактирования этих подсказок (и после этого saveAll () метод), мне нужно было $this->data
, чтобы иметь массив ann как это:
Array
(
[Assitance] => Array
(
[5] => Array
(
[id] => 5
[date] => 2011-01-09
[assitance] => A
[updated] => 2011-01-16 21:32:00
[created] => 2011-01-16 21:32:00
)
[6] => Array
(
[id] => 6
[date] => 2011-03-09
[assitance] => A
[updated] => 2011-01-16 21:32:00
[created] => 2011-01-16 21:32:00
)
)
)
в то же время мне нужно было каждого учащегося, связанного с его или ее помощниками , чтобы иметь возможность циклически проходить через них и отображать формы редактирования для каждого помощника в таблице, подобной той, что в вопрос:

То, что я закончил, это
- Сначала я опрашиваю всех студентов, принадлежащих к выбранной группе .
- Для каждого учащегося получить все его / ее помощь .
Итак, для каждого студента у меня получился такой массив:
Array
(
[Student] => Array
(
[id] => 12
[last_name] => LASARTE
[name] => Julia
[created] => 2011-01-08 16:35:00
[updated] => 2011-01-08 16:35:00
[assitance] => Array
(
[0] => Array
(
[Assitance] => Array
(
[id] => 4
[date] => 2011-01-09
[assitance] => z
[updated] => 2011-01-16 20:51:00
[created] => 2011-01-16 20:51:00
)
[assitance_studenty] => Array
(
[id] => 2
[student_id] => 12
[assitance_id] => 4
[comision] => 0
)
)
)
)
)
)
Теперь у меня есть информация, необходимая для отображения таблицы и создания форм, но мне все еще нужны данные вспомогательных функций в $this->data
, так что помощник по форме может создать отображение правильной информации, и после войны saveAll () корректно обновляет строки в базе данных.
Мне нужно было превратить массив $students
в структуру, подобную той, что была в начале поста. Введите Установить класс :
$formated_students = Set::combine($students, '{n}.students.id', '{n}.students');
$assitance = Set::extract('/presentes/Assistance', $formated_students);
$this->data['Assistance'] = Set::combine($assistance, '{n}.Assistance.id', '{n}.Assistance');
Я почти уверен, что первые строки (форматирование массива студентов для извлечения помощи) могут быть сделаны только с одним Set::extract
или Set::classicExtract
, но это сработало, и регулярные выражения на самом деле не мое, так.
После этого нужно просто выполнить цикл обработки данных и составить таблицу:
<?php
echo $form->create('Assistance', array('url' => array('controller' => 'Comisions', 'action' => 'register_assitance')));
foreach ($students as $student) { ?>
<tr><td>><?php echo $student['students']['last_name'].", ".$student['students']['name']; ?></td>
<?php foreach ($student['students']['assitance'] as $asstiance) { ?>
<td><?php echo $form->input('Assistance.'.$assitance['Assistance']['id'].'.id');
echo $form->input('Assistance.'.$assitance['Assistance']['id'].'.assistance', array( 'label' => false, 'size' => 1)) ?></td>
<?php } ?>
</tr>
<?php } ?>