我有这个型号:
School hasMany Teachers
我的学校控制器上有一个查看操作/页面,我需要在其中添加“为此学校添加新教师”链接。此链接必须指向教师添加页面,新教师必须从上一页引用该学校。
我这样做是通过在我的链接上添加一个查询字符串,例如:
<a href="/teachers/add?school_id=4">Add new teacher for this school</a>
然后在我的TeachersController中,我将此值传递给我的视图(teacher :: add.ctp)作为$ school_id,并在add.ctp中创建一个隐藏的输入,如:
$this->hidden('school_id', ['value' => $school_id])
因此,当我提交教师添加表单时,其school_id字段设置正确。
有更好的方法吗?我对我的解决方案和查询字符串技巧感到满意(可以在地址栏中改变它...)。
由于
答案 0 :(得分:1)
我猜你必须以某种方式将信息传递给动作。
您可以使用表单(Cake FormHelper有formlink()方法)而不是链接,并通过POST传递school_id
无论如何,即使您使用POST数据,用户仍可以通过多种方式修改数据。
我在这里看到的问题是你使用了一个隐藏的字段。我认为这是多余的,因为当您将数据发送到/teachers/add?school_id=4
时,您的查询数据中已经包含此信息
所以你可以做到
$teacher = $this->Teachers->newEntity()
$teacher = $this->Teachers->patchEntity($teacher , $this->request->data);
$teacher->school_id = $this->request->query('teacher_id');