Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在存储输入之前,有没有一种方法可以处理Laravel模型中的输入?_Php_Laravel_Model - Fatal编程技术网

Php 在存储输入之前,有没有一种方法可以处理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

在Laravel中,我在许多控制器中使用了模型的创建方法

现在,我需要对所有这些控制器中的特定输入执行
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来执行此操作。或者在模型中使用事件闭包