我有这个型号:
School hasMany Teachers
我在学校控制器上有一个查看操作/页面,我需要在那里放一个"为这所学校添加新老师"链接。此链接必须指向教师添加页面,新教师必须引用上一页中的学校。
我通过在链接上添加一个查询字符串来实现这一点,比如:
<a href="/teachers/add?school_id=4">Add new teacher for this school</a>
然后在我的TeachersController中,我将这个值作为$school_id传递给我的视图(tear::add.ctp),并在add.ctp中创建一个隐藏的输入,比如:
$this->hidden('school_id', ['value' => $school_id])
因此,当我提交教师添加表单时,其school_id字段设置正确。
有更好的方法吗?我对我的解决方案和查询字符串技巧不太满意(可以在地址栏中更改…)
感谢
我想您必须以某种方式将信息传递给操作。
您可以使用表单(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');