我正在保存从表单发送的数据。
在我正在做的控制器中:
$this->User->create();
$this->User->save($this->request->data)
$this->request->data 看起来像这样:
'User' => array(
'password' => '*****',
'username' => 'ddddd',
'role' => '256/aa01bdf80d42beb48dd3225acddf447fdd7a39f3',
'parent_id' => '0/b6ba9bd57f6c70cf738891d4c6fac22abed4161d'
)
有适用于“角色”和“父 ID”的验证规则,以确保角色/父 ID 在用户可以访问的范围内。
如果数据有效,验证会更改字段值。
我还有一个树行为,它在行为的 beforeSave() 过滤器中设置一些树字段。
验证规则正在将更改写入$this->data->[$model][$field]
如下所示。
public function checkListHash($check, $field) {
$explodedCheck = explode('/', $check[$field]);
if ($this->secureId($explodedCheck[0], $explodedCheck[1])) {
$this->data['User'][$field] = $explodedCheck[0];
return true;
}
return false;
}
行为中的 beforeFilter() 正在使用如下语句更改数据数组:
$Model->data[$Model->alias][$ancestors] = $ancestorList;
验证和 beforeFilter() 处理完成后,我有一个漂亮且正确的数据数组,$this->User->data
如下所示:
'User' => array(
'password' => '*****',
'active' => '0',
'role' => '256',
'parent_id' => '0',
'node' => '0',
'username' => 'ddddd',
'modified' => '2013-09-15 09:55:02',
'created' => '2013-09-15 09:55:02',
'ancestor_list' => ',0,'
)
然而,$this->request->data
不变。这就是被拯救的东西。
显然,我不了解这些获取数据的各种方式之间的关系。我尝试了多种方法来处理三种上下文中的数据:
- 控制器
- 模型
- 行为
我$this->User->create($this->request->data);
在 Controller save() 语句之前尝试过。
在控制器中,我看到的可用数据数组:
- 保存前
- $this->request->data = $this->data = 表单中的正确数据
$this->User->data = 一些默认的、未填充的数组
在我使用 $this->User->create($this->request->data) 时保存之前
所有三个数组都包含原始表单数据
在任何一种情况下保存后
- $this->request->data = $this->data = 和以前一样
- $this->User->data = 正确处理的数据
谁能帮我解决?
唐·德雷克