Команда Laravel випустила версію 12.6.0, що включає новий метод Eloquent fillAndInsert()
, хелпер для сегментів URL, метод appliedRules()
для Password та інші цікаві оновлення
Люк Кузміш додав метод fillAndInsert()
, який дозволяє “в ручному режимі кастувати значення до примітивів, встановлювати часові мітки та UUID”:
ModelWithUniqueStringIds::fillAndInsert([
[
'name' => 'Тейлор', 'role' => IntBackedRole::Admin, 'role_string' => StringBackedRole::Admin,
],
[
'name' => 'Нуном', 'role' => 3, 'role_string' => 'admin',
],
[
'name' => 'Дріс', 'uuid' => 'bbbb0000-0000-7000-0000-000000000000',
],
[
'name' => 'Кріс',
],
]);
Докладніше в Запиті на злиття #55038.
Люк Кузміш розробив метод requestException()
для випадків, коли вам потрібно вручну створити виключення для HTTP-клієнта:
// До
$exception = new RequestException(
new Response(
Http::response(['code' => 'not_found', 404])->wait()
)
);
// Після
$exception = Http::requestException(['code' => 'not_found'], 404);
Деталі дивіться в Запиті на злиття #55241.
Честер Сайкс додав новий метод pathSegments()
до класу Uri
, який повертає частини шляху URI у вигляді колекції:
$uri = Uri::of('https://laravel.com/one/two/three');
// Вручну
$firstSegment = collect(explode('/', $uri->path()))->first(); // 'one'
// Використовуючи метод pathSegments()
$firstSegment = $uri->pathSegments()->first();
@devajmeireles представив метод appliedRules()
для флюїдного конструктора правил Password. Метод appliedRules()
повертає масив правил валідації пароля та їх статуси використання
Гляньте на приклад коду для визначення правил пароля вашого додатку:
Password::defaults(function () {
return Password::min(8)
->mixedCase()
->numbers();
});
// У вигляді
return view('livewire.profile', [
'appliedRules' => Password::default()->appliedRules(),
]);
<div>
<form wire:submit="save">
<div>
<x-input label="Password" />
<span>{{ __('Пароль має містити не менше :min символів.', ['min' => $appliedRules['min']]) }}</span>
@if ($appliedRules['mixedCase'] === true)
<span>{{ __('Пароль має містити хоча б одну велику та одну маленьку літеру.') }}</span>
@endif
@if ($appliedRules['numbers'] === true)
<span>{{ __('Пароль має містити хоча б одну цифру.') }}</span>
@endif
</div>
<x-button type="submit">
Зберегти
</x-button>
</form>
</div>
Деталі реалізації в Запиті на злиття #55206.
Бенедикт Франке додав можливість заборони команди SeedCommand
у певних середовищах. SeedCommand
не забороняється при виклику prohibitDestructiveCommands()
, проте після Запиту на злиття #55238 ви можете заборонити команду db:seed
таким чином:
DB::prohibitDestructiveCommands();
SeedCommand::prohibit();
Гюнтер Дебрауер оновив команду model:prune
, щоб процес продовжувався навіть після виникнення виключення:
Коли ви виконуєте команду model:prune, і під час вирізання однієї моделі виникає виключення, вся команда завершується невдало. У мене була подібна проблема нещодавно в проєкті. Це призвело до того, що жодна модель не була вирізана, поки я не виправив помилку, що заважала вирізанню однієї моделі
Цей PR це виправляє. Команда model:prune пропускатиме моделі, які не можуть бути вирізані, та звітуватиме про виключення, що сталися під час вирізання цих моделей
Деталі в Запиті на злиття #55237.
Ви можете переглянути повний список нових функцій та оновлень нижче, а також зміни між версіями 12.5.0 та 12.6.0 на GitHub. Наступні нотатки про випуск безпосередньо з чейнджлогу:
db:seed
від @spawnia в https://github.com/laravel/framework/pull/55238Rules\Password::appliedRules
від @devajmeireles в https://github.com/laravel/framework/pull/55206Model::fillAndInsert()
від @cosmastech в https://github.com/laravel/framework/pull/55038migrate:rollback
у PhpDoc DB::prohibitDestructiveCommands від @spawnia в https://github.com/laravel/framework/pull/55252Http::requestException()
від @cosmastech в https://github.com/laravel/framework/pull/55241pathSegments()
для Uri від @chester-sykes в https://github.com/laravel/framework/pull/55250