如何在 $request 对象上使用 Laravel 5 HTML 净化器?
How to use Laravel 5 HTML Purifier on $request object?
我正在使用 HTMLPurifier for Laravel 5 包来清理我的输入字段。目前我的store()
方法是这样的:
public function store(Request $request)
{
// Some business logic goes here
$post = Post::create($request->all());
// More business logic
}
我的 $request
变量包含这些:
{
"_token": "zbyUnJuAbSliem40B6xjWJfGOayoFlRSVIvrDlDM",
"title": "Test Title",
"slug": "test-title",
"category_id": "1",
"tags": [
"2"
],
"body": "<p>Test body.</p>"
}
如何在 $request
变量上使用 Purifier::clean()
方法来仅净化 $request->body
元素?
如果我使用 Purifier::clean($request->all())
然后它将 <p>
标记添加到 $request
对象的所有元素而不是像这样只添加 body
元素:
{
"_token": "<p>zbyUnJuAbSliem40B6xjWJfGOayoFlRSVIvrDlDM</p>",
"title": "<p>Test Title</p>",
"slug": "<p>test-title</p>",
"category_id": "<p>1</p>",
"tags": [
"<p>2</p>"
],
"body": "<p>Test body.</p>"
}
对请求使用merge
方法:
$request->merge(['body' => Purifier::clean($request->get('body')]);
编辑
我打算在上面使用 ->merge
而不是 ->replace
。
你能试试这个吗:
Purifier::clean($request->get('body'));
OK 我得到答案了,可以通过以下方式完成:
public function store(Request $request)
{
// Some business logic goes here
$request->merge(['body' => Purifier::clean($request->get('body'))]);
$post = Post::create($request->all());
// More business logic
}
在您的 Post
模型中,您可以执行以下操作...
public function setBodyAttribute($value)
{
$this->attributes['body'] = Purifier::clean($value);
}
这样您就不必在每次创建新的 post.
时都重复执行相同的逻辑。
我正在使用 HTMLPurifier for Laravel 5 包来清理我的输入字段。目前我的store()
方法是这样的:
public function store(Request $request)
{
// Some business logic goes here
$post = Post::create($request->all());
// More business logic
}
我的 $request
变量包含这些:
{
"_token": "zbyUnJuAbSliem40B6xjWJfGOayoFlRSVIvrDlDM",
"title": "Test Title",
"slug": "test-title",
"category_id": "1",
"tags": [
"2"
],
"body": "<p>Test body.</p>"
}
如何在 $request
变量上使用 Purifier::clean()
方法来仅净化 $request->body
元素?
如果我使用 Purifier::clean($request->all())
然后它将 <p>
标记添加到 $request
对象的所有元素而不是像这样只添加 body
元素:
{
"_token": "<p>zbyUnJuAbSliem40B6xjWJfGOayoFlRSVIvrDlDM</p>",
"title": "<p>Test Title</p>",
"slug": "<p>test-title</p>",
"category_id": "<p>1</p>",
"tags": [
"<p>2</p>"
],
"body": "<p>Test body.</p>"
}
对请求使用merge
方法:
$request->merge(['body' => Purifier::clean($request->get('body')]);
编辑
我打算在上面使用 ->merge
而不是 ->replace
。
你能试试这个吗:
Purifier::clean($request->get('body'));
OK 我得到答案了,可以通过以下方式完成:
public function store(Request $request)
{
// Some business logic goes here
$request->merge(['body' => Purifier::clean($request->get('body'))]);
$post = Post::create($request->all());
// More business logic
}
在您的 Post
模型中,您可以执行以下操作...
public function setBodyAttribute($value)
{
$this->attributes['body'] = Purifier::clean($value);
}
这样您就不必在每次创建新的 post.
时都重复执行相同的逻辑。