Php 在存储输入之前,有没有一种方法可以处理Laravel模型中的输入?
在Laravel中,我在许多控制器中使用了模型的创建方法 现在,我需要对所有这些控制器中的特定输入执行Php 在存储输入之前,有没有一种方法可以处理Laravel模型中的输入?,php,laravel,model,Php,Laravel,Model,在Laravel中,我在许多控制器中使用了模型的创建方法 现在,我需要对所有这些控制器中的特定输入执行strip\u标记($comment),然后使用create()方法将其插入数据库,如下所示: Comment:create([ 'comment' => $comment, ... ]); 我是否应该在所有控制器中重复执行此操作: $comment = strip_tags($comment); // < Is it possible to do this on
strip\u标记($comment)
,然后使用create()
方法将其插入数据库,如下所示:
Comment:create([
'comment' => $comment,
...
]);
我是否应该在所有控制器中重复执行此操作:
$comment = strip_tags($comment); // < Is it possible to do this on model's file so we don't repeat it every time?
Comment:create([
'comment' => $comment,
...
]);
$comment=strip_标签($comment);//<有没有可能在模型的文件中这样做,这样我们就不会每次都重复?
注释:创建([
'comment'=>$comment,
...
]);
或者这是可以在模型中实现的功能?您可以使用
模型事件
在保存之前进行检查和安排
将以下方法添加到模型类中
protected static function boot()
{
parent::boot();
self::saving(function ($model) {
$model->comment = strip_tags($model->comment);
// do your pre-checks or operations.
});
}
这里有一个阅读的方法有一种直接在模型中执行的方法,称为。如果列名为comment,则将调用mutator函数setCommentAttribute
public function setCommentAttribute($comment)
{
$this->attributes['comment'] = strip_tags($comment);
}
此模型使用保存/更新的任何位置,注释数据都将通过集合。。。函数。您是否正在剥离标记以防止XSS?@Hardood是的,因为我在显示此内容时必须使用
{!!…!!}
(因此不能在此处转义),并且我还希望允许一些HTML标记,同时剥离其他标记。您可以使用Laravel Observer来执行此操作。或者在模型中使用事件闭包