使用CakePHP在单独的页面上创建相关的记录表单


Create related record form on separate page with CakePHP

我有这个型号:

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');