2017-07-19 60 views
-1

我想在我的实体保存中执行没有引号的htmlspecialchars。CakePHP验证器不工作表单实体

代码:

$post['body'] = htmlentities($this->request->getData('body'), ENT_NOQUOTES); 

验证不保存努力。

如何使它工作?

由于

回答

0

h()方法仅仅是对htmlspecialchars()更多信息的包装可在蛋糕API中找到https://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html#h

h(string $text, boolean $double = true, string $charset = null) 

长期和短期的是,对于那些第一参数函数是一个字符串,并且传入一组数据。如果你想剥夺那些与你的自己或个人运行的特殊字符的每个元素的功能

编辑您可以覆盖patchEntity():增加更多明显的例子,以保持验证

可以使用withData设置响应数据并仍然使用修补程序实体。例如。

$data = $this->request->withData('body', htmlentities($this->request->getData('body'), ENT_NOQUOTES)) 

然后使用新的请求对象修补/验证实体。

patchEntity($post, $data) 
+0

如果我尝试$ post ['body'] = htmlentities($ this-> request-> getData('body'),ENT_NOQUOTES);验证器不起作用。有什么方法可以使它工作 - 即使身体和getData一样吗? –

+0

您可以使用withData设置响应数据并仍使用修补程序实体。例如'$ data = $ this-> request-> withData('body',htmlentities($ this-> request-> getData('body'),ENT_NOQUOTES))'然后使用带有$ data的补丁实体作为请求。我会用更清晰的示例编辑我的帖子 – KaffineAddict

+0

感谢您的回复。我得到当使用$回复['身体'] = $ this->请求 - > withData('body',htmlentities($ this-> request-> getData('body'),ENT_NOQUOTES)时,无法将值转换为字符串。 ; –