我正在使用CakePhp开发一个简单的应用程序,并且需要一些帮助来创建使用一些相关数据的多记录编辑表单。
我正在开发的应用程序非常简单,其主要目的是管理学生记录:更新,删除,将学生从一个组更改为另一个组,通常的嫌疑人。
数据库的相关表格是:
群组 =( id ,老师,教室等)
groups_students =( groupID , studentID ,因为,直到)
学生 =( id ,name,last_name等)
分享 =( id ,分享,日期)
aid_students ( studentID , assitanceID ,meta_information)
正如您可能从上表中收集的那样,该应用程序应该有助于记录协助。这就是我遇到问题的地方。
我想做的是:
对于属于该组的每个学生,注册协助应该重定向到一个视图,用户可以看到该学生的帮助,编辑它们并保存。像这样:
其中 A 代表"缺席" P 代表"现在"并且用户可以编辑每个人和保存。
我只是不知道如何去做?我该如何管理?我已经设法为协助创建了一个多编辑表单,但添加相关数据很痛苦,我不知道是否应该从群组控制器中查询学生,然后将其传递给动作注册协助,或管理协助控制器内的所有逻辑?
任何帮助都会很棒,
谢谢!
修改:这是$this->Student->find('first');
Array (
[Alumno] => Array (
[id] => 14
[tipo] => dni
[dni] => 2321312312
[apellido] => COQUITO
[nombre] => Pepe
[carrera] => Composición Musical
[creado] => 2011-01-08 17:59:00
[modificado] => 2011-01-08 17:59:00
)
)
输出是西班牙语。 Alumno =学生, nombre =名字, apellido = last_name。
答案 0 :(得分:1)
好吧,我设法找到了解决方法。我在等着看是否有人找到了更好的东西,因为我很确定我的解决方案远非最好的,但是如果有人在将来发现这个问题的话,就这样了。
我的问题是,我需要为我选择的每个小组注册协助:
现在,为了使用Form helper编辑这些助手(以及之后的saveAll()方法),我需要$this->data
来安排像这样的数组:
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
的数组转换为类似帖子开头的结构。输入Set Class:
$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 } ?>