Правило url
Правило url используется для валидации полей формы,
которые должны содержать корректный URL-адрес. Оно проверяет,
что переданное значение соответствует формату URL согласно
спецификации RFC 2396. Это правило полезно для проверки
ссылок на сайты, изображения, файлы и другие веб-ресурсы.
По умолчанию правило требует наличия протокола (http, https)
в начале строки.
Синтаксис
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'field' => 'url'
]);
?>
Пример
Давайте провалидируем поле с URL-адресом сайта:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class SiteController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'website' => 'url'
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
echo implode(' ', $res);
return;
}
echo "Validation passed";
}
}
?>
Результат выполнения кода при передаче валидного URL:
"Validation passed"
Результат выполнения кода при передаче невалидного URL:
"The website field must be a valid URL."
Пример
Давайте проверим несколько вариантов URL-адресов в запросе:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class UrlController extends Controller
{
public function validateUrl(Request $request)
{
$validator = Validator::make($request->all(), [
'url' => 'url'
]);
if ($validator->passes()) {
$res = "URL is valid";
} else {
$res = $validator->errors()->first('url');
}
echo $res;
}
}
?>
Результат выполнения кода с разными входными данными:
"https://example.com" => "URL is valid"
"http://site.com" => "URL is valid"
"ftp://files.com" => "URL is valid"
"www.example.com" => "The url field must be a valid URL."
"example.com" => "The url field must be a valid URL."
"not-a-url" => "The url field must be a valid URL."
Пример
Использование правила url с другими правилами валидации
для более строгой проверки:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class LinkController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'website' => 'required|url|max:255',
'image' => 'nullable|url'
]);
if ($validator->fails()) {
$res = $validator->errors()->all();
echo implode(' ', $res);
return;
}
echo "All URLs are valid";
}
}
?>
Результат выполнения кода:
"All URLs are valid"
Смотрите также
-
правило
required,
которое делает поле обязательным для заполнения -
правило
email,
которое проверяет корректность email-адреса -
правило
active_url,
которое проверяет существование URL-адреса -
правило
regex,
которое проверяет значение по регулярному выражению