📜  laravel 自定义验证检查 URL 是否有效 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:49.332000             🧑  作者: Mango

Laravel 自定义验证检查 URL 是否有效 - PHP

在 Laravel 中,我们可以使用自定义验证器来检查输入数据是否有效。在本文中,我们将介绍如何使用 Laravel 的自定义验证器来验证 URL 是否有效。

步骤
1. 创建自定义验证器

首先,我们需要在 Laravel app 目录下的 "app/Validators" 文件夹下创建一个自定义验证器。在这里,我们创建一个名为 "UrlValidator" 的验证器。打开你的命令行终端并执行以下命令:

php artisan make:validator UrlValidator

这将在 "app/Validators" 文件夹下创建一个 "UrlValidator" 类。在这个类中,我们可以重写 "validate" 方法来验证 URL。

<?php

namespace App\Validators;

class UrlValidator
{
    public function validate($attribute, $value, $parameters, $validator)
    {
        // 验证 URL 是否有效
        if (!filter_var($value, FILTER_VALIDATE_URL)) {
            return false;
        }

        return true;
    }
}

在上面的代码中,我们使用 PHP 的 filter_var 函数来验证 URL 是否有效。如果 URL 无效,我们返回 false 来表示验证失败,否则返回 true 来表示验证成功。

2. 注册自定义验证器

接下来,我们需要将我们的自定义验证器注册到 Laravel 的服务容器中。打开 "app/Providers/AppServiceProvider.php" 文件,并在 "boot" 方法中添加以下代码:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Validator;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Validator::extend('url', 'App\Validators\UrlValidator@validate');
    }

    // ...
}

在上面的代码中,我们使用 Validator 类的 extend 方法来注册自定义验证器。第一个参数 'url' 是我们为验证器指定的验证器名称,第二个参数 'App\Validators\UrlValidator@validate' 是我们的自定义验证器类及方法名。

3. 使用自定义验证器

现在,我们已经成功创建了一个自定义验证器并将其注册到 Laravel 的服务容器中。接下来,我们可以在我们的表单验证规则中使用自定义验证器。打开表单验证规则文件 "app/Http/Requests/ExampleRequest.php",并添加以下代码:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ExampleRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'url' => 'required|url',
        ];
    }
}

在上面的代码中,我们使用了 Laravel 内置的 "url" 验证规则,并将其应用到了 "url" 字段上。现在,如果该字段中包含无效的 URL,则该字段验证将失败。

总结

在本文中,我们学习了如何使用 Laravel 的自定义验证器来验证 URL 是否有效。我们创建了一个名为 "UrlValidator" 的自定义验证器,并将其注册到 Laravel 的服务容器中。最后,我们在表单验证规则中应用了我们的自定义验证器。