📅  最后修改于: 2023-12-03 14:43:49.332000             🧑  作者: Mango
在 Laravel 中,我们可以使用自定义验证器来检查输入数据是否有效。在本文中,我们将介绍如何使用 Laravel 的自定义验证器来验证 URL 是否有效。
首先,我们需要在 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 来表示验证成功。
接下来,我们需要将我们的自定义验证器注册到 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' 是我们的自定义验证器类及方法名。
现在,我们已经成功创建了一个自定义验证器并将其注册到 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 的服务容器中。最后,我们在表单验证规则中应用了我们的自定义验证器。