Представляю очередные трюки и нововведения в Laravel. На данный момент последняя вышедшая версия — 9.10.0
Хелпер 'blank()'
для проверки на пустоту строк, коллекций, массивов и других типов данных.
blank(''); // true
blank(' '); // true
blank(null); // true
blank(collect()); // true
blank(0); // false
blank(true); // false
blank(false); // false
Данные методы помогут разложить текущий URL-адрес на необходимые части.
requiest()->url();
// http://example.site/example/docs
requiest()->fullUrl();
// http://example.site/example/docs?page=1
requiest()->fullUrlWithQuery(['filter' => 'applied']);
// http://example.site/example/docs?page=1&filter=applied
requiest()->fullUrlWithoutQuery(['page']);
// http://example.site/example/docs
requiest()->path();
// example/docs
requiest()->segment(2);
// docs
requiest()->segments();
// ['example', 'docs']
public function rules(): array
{
return match($this->method()){
'POST' => [
'category_id' => 'required|int|exists:categories,id',
'description' => 'string',
'quantity' => 'int|required',
'cost_unitary_price' => 'required',
],
'PUT' => [
id' => 'required|int|exists:inventories,id',
'category_id' => 'required|int|exists:categories, id',
'description' => 'string|nullable',
'quantity' => 'int|nullable',
'cost_unitary_price' => 'nullable',
],
'DELETE' => [
'id' => 'required|int|exists:inventories, id',
],
}
}
Создание коллекций из результатов запроса стало проще.
// Было
collect(
Http::get('example.com/api/users')
->json()
)->pluck('name');
// Стало
Http::get('example.com/api/users')
->collect()
->pluck('name');
Совет от Srinath Reddy по автоматизации отправки вывода запланированных задач.
// Отправить электронное письмо с выводом после завершения
$schedule->command('snapshot')->daily()->emailOutputTo(['user@user.com']);
// Отправить электронное письмо с выводом после завершения (только если есть вывод)
$schedule->command('snapshot')->daily()->emailWrittenOutputTo(['user@user.com']);
// Отправить электронное письмо с выводом только в случае сбоя
$schedule->command('snapshot')->daily()->emailOutputOnFailure(['user@user.com']);
В версии 8.32 появился дамп HTTP-запроса перед отправкой с помошью метода 'dd()'
.
return Http::dd()->get('http://example.com');
Подробнее: https://laravel.com/docs/http-client#dumping-requests
Если нужно приводить данные в шаблонах Blade к определённому виду, то можно создать свою директиву, которая это и будет делать. В примере от Povilas Korop.
// composer.json
"require": {
"laravel/cashier": "^12.9",
}
//app/Providers/AppServiceProvider.php
public function boot()
{
Blade::directive('money', function ($expression) {
return "<?php echo Laravel\Cashier\Cashier::formatAmount($expression, config('cashier.currency')); ?>";
});
}
// В шаблоне Blade
<div>Price: @money($book-price)</div>
@if ($book-discount_price)
<div>Discounted price: @money($book->discount_price)</div>
@endif