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

时间:2016-03-24 14:37:44

标签: php cakephp cakephp-3.0

我有这个型号:

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字段设置正确。

有更好的方法吗?我对我的解决方案和查询字符串技巧感到满意(可以在地址栏中改变它...)。

由于

1 个答案:

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