Метод passes
Метод passes класса Validator применяется для проверки успешности валидации данных.
Он возвращает булево значение: true - если все правила валидации выполнены,
и false - если есть ошибки. Метод часто используется в условных конструкциях
для проверки результатов валидации перед выполнением дальнейших действий.
Синтаксис
<?php
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($data, $rules);
$res = $validator->passes();
?>
Метод не принимает параметров и возвращает значение типа bool.
Пример
Давайте проверим, прошла ли валидация данных формы регистрации:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
public function register(Request $request)
{
$data = $request->all();
$rules = [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8',
];
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
echo "Registration successful!";
} else {
echo "Validation failed!";
}
}
}
?>
Результат выполнения кода при корректных данных:
"Registration successful!"
Результат выполнения кода при некорректных данных:
"Validation failed!"
Пример
Метод passes удобно использовать для проверки выполнения
сложных условий валидации перед сохранением модели:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\Article;
class ArticleController extends Controller
{
public function store(Request $request)
{
$data = $request->only(['title', 'content', 'status']);
$rules = [
'title' => 'required|string|max:200',
'content' => 'required|string|min:10',
'status' => 'in:draft,published',
];
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
$article = Article::create($data);
echo "Article created: " . $article->title;
} else {
echo "Article creation failed!";
}
}
}
?>
Результат выполнения кода при успешной валидации:
"Article created: Laravel Basics"
Результат выполнения кода при ошибках валидации:
"Article creation failed!"
Пример
Использование метода passes для проверки валидности
данных перед выполнением нескольких действий:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ProductController extends Controller
{
public function validateProduct(Request $request)
{
$data = $request->all();
$rules = [
'name' => 'required|string|max:100',
'price' => 'required|numeric|min:0',
'quantity' => 'required|integer|min:1',
];
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
echo "Product data is valid. Proceed with saving.";
} else {
$errors = $validator->errors()->all();
echo "Invalid data. Errors: " . implode(", ", $errors);
}
}
}
?>
Результат выполнения кода для корректных данных:
"Product data is valid. Proceed with saving."