我通过唯一值作为URL参数使用无登录身份验证,因此当“邀请”用户访问提供的链接时,我知道他们是谁,并在会话中设置一些用户信息。
在此页面上是一个表单,包含父模型和相关子模型(hasMany,belongsTo,所有这些)。
每个子模型都有一个'agent_id'字段(FK到Agent模型,在访问页面时加载),需要使用先前在Session中加载的ID填充。
我是否必须为每个子模型表单元素组旁边的“agent_id”创建隐藏输入字段,还是有更简单的方法?
也许我可以从会话中获取或者从模型/行为beforeValidate()
或某些内容中获取某些内容?这将是理想的,但我不确定如何。
谢谢!
答案 0 :(得分:2)
从Model调用会话值不是一个好习惯(在MVC模式中)。该值应由操作提供。
创建隐藏输入并不是一个好主意,因为用户可以修改它。
所以你的代码应该像。
if (!empty($this->data)) {
$this->Model->create();
$this->data['Model']['agent_id'] = $this->Auth->user('id');
if ($this->Model->save($this->data)) {
// success
}
}
修改强>
是的,您可以从模型中读取会话,但建议使用不。因为它实际上打破了MVC架构。如果您不在乎,可以使用
// in your Model.php
App::import('Model', 'CakeSession');
$session = new CakeSession();
<强>参考强>