Метод filled
Метод filled класса Illuminate\Http\Request
применяется для проверки наличия переданного поля в запросе
и его заполненности. Первым параметром передаётся имя поля
в виде строки. Метод возвращает true, если поле
присутствует в запросе и его значение не является пустым,
и false в противном случае. В отличие от метода
has, метод filled также проверяет,
что значение поля не пустое (не равно '',
' ', 'null', '[]').
Синтаксис
<?php
$request->filled($key);
?>
Пример
Давайте проверим, присутствует ли поле 'name'
в запросе и имеет ли оно непустое значение:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
if ($request->filled('name')) {
echo "The name field is filled.";
} else {
echo "The name field is empty or missing.";
}
}
}
?>
Результат выполнения кода при отправке запроса
с полем 'name', равным 'John Doe':
"The name field is filled."
Результат выполнения кода при отправке запроса
без поля 'name' или с пустым полем:
"The name field is empty or missing."
Пример
Давайте проверим наличие поля 'email'
в запросе методом filled и выведем его
значение, если оно заполнено:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function update(Request $request)
{
if ($request->filled('email')) {
$email = $request->input('email');
echo "Email: " . $email;
} else {
echo "Email is not provided.";
}
}
}
?>
Результат выполнения кода при отправке запроса
с полем 'email', равным 'john@example.com':
"Email: john@example.com"
Пример
Давайте проверим несколько полей запроса одновременно
с помощью метода filled:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function create(Request $request)
{
if ($request->filled('title') && $request->filled('content')) {
echo "Both title and content are provided.";
} elseif ($request->filled('title')) {
echo "Only title is provided.";
} elseif ($request->filled('content')) {
echo "Only content is provided.";
} else {
echo "Neither title nor content is provided.";
}
}
}
?>
Результат выполнения кода при отправке запроса с обоими полями:
"Both title and content are provided."
Результат выполнения кода при отправке запроса
только с полем 'title':
"Only title is provided."
Пример
Давайте сравним работу методов filled
и has на примере пустого значения:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function test(Request $request)
{
$has = $request->has('empty_field');
$filled = $request->filled('empty_field');
echo "Has: " . ($has ? "true" : "false") . "\n";
echo "Filled: " . ($filled ? "true" : "false");
}
}
?>
Результат выполнения кода при отправке запроса
с полем 'empty_field', равным пустой строке:
"Has: true"
"Filled: false"
Как видно из примера, has возвращает true,
так как поле присутствует, а filled возвращает
false, так как значение считается пустым.