如何在保存/转换为实体之前修改请求数据?

时间:2016-07-20 17:13:49

标签: cakephp cakephp-3.x strip-tags

在CakePHP 3.2中保存数据之前,删除HTML标记的建议方法是什么?

我正在使用$this->request->data构建newEntity(数据来自表单),稍后,我正在使用保存功能。

1 个答案:

答案 0 :(得分:2)

您可以使用Model.beforeMarshal事件/回调来修改数据,然后再将其转换为实体。

来自文档:

  

如果您需要在转换成请求数据之前对其进行修改   实体,您可以使用Model.beforeMarshal事件。这个事件让   您在创建实体之前操纵请求数据:

// In a table or behavior class
public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
{
   if (isset($data['username'])) {
       $data['username'] = mb_strtolower($data['username']);
   }
}
     

[...]

<强> Cookbook > Database Access & ORM > Saving Data > Modifying Request Data Before Building Entities

在相关的说明中,不要忘记依赖输入清理,在使用/输出数据时务必将其视为可能不安全!