Что нового ждет нас в Laravel 5.2.23

в 7:28, , рубрики: laravel, laravel 5.2, laravel 5.2.23, метки: ,

В настоящий момент Laravel насчитывает уже 911 участников на GitHub, многие из них активно добавляют новый функционал. Давайте посмотрим что же ждет нас новенького в Laravel версии 5.2.23, которая уже на пороге.
image

Новое правило валидации in_array

Правила валидации в laravel просто изумительная вещь, я лично заменил кучу кода в некоторых проектах на пару строк валидации.
В 5.2.23 добавлено новое правило. Оно помогает проверить что значение элемента массива содержится в другом массиве:

Validator::make(
    [
        'devices' => [['user_id' => 1], ['user_id' => 2]],
        'users' => [['id' => 1, ['id' => 2]]]
    ],
    ['devices.*.user_id' => 'in_array:users.*.id']
);

Здесь происходит проверка того, что все значения user_id у devices соответcвуют ключам id из массива users .

У Arr::first() & Arr::last() коллбек теперь опционален

Ранее коллбек был обязателен в качестве второго параметра, теперь нет:

$array = [100, 200, 300];
// По НОВОМУ  Этот код вернет 100
Arr::first($array); /** тоже самое что и  **/ array_first($array);
// По НОВОМУ  Этот код вернет 300
Arr::last($array); /**тоже самое что и  **/ array_last($array);
// Можно и (как РАНЬШЕ)  сделать это и получить 200
Arr::first($array, function ($key, $value) {
    return $value >= 150;
});

Указание более одного посредника(middleware) одновременно

В контроллере теперь при указании посредника можно задать сразу несколько одной строкой.

$this->middleware(['auth', 'subscribed'], ['only' => ['getCandy']]);

Новые директивы Blade php, @endphp, и unset

Директива php позволит писать PHP выражения таким образом:

@php($count = 1)

@php(++ $count)

@php
$now = new DateTime();
$environment = isset($env) ? $env : "testing";
@enphp

unset — всего лишь обертка для unset().

@unset($count)

Возможность переопределять основные директивы Blade

До версии 5.2.23 было невозможно расширять Blade и переопределять основные директивы, теперь любое ваше расширение может переопределить любую директиву.

Новый почтовый драйвер для SparkPost

Что нового ждет нас в Laravel 5.2.23 - 2

Новый метод monthlyOn() для описания задач по расписанию

$schedule->call(function () {
    DB::table('shopping_list')->delete();
})->monthlyOn(4, '12:00');

Новый метод app()->isLocale()

// Вместо этого
if (app()->getLocale() == 'en')
// можно сделать
if (app()->isLocale('en'))

Выборки по JSON полям в MySQL 5.7 при помощи построителя запросов

В MySQL 5.7 появился новый тип столбца — JSON, В Laravel 5.2.23 можно делать выборки по этим полям также свободно как и обычно.

Представим, что у нас есть таблица users с колонкой name типа JSON, поле содержит значения типа:

{"en":"name","ar":"nom"}

Теперь можно составить подобное условие

User::where('name->en', 'name')->get();
// Углубиться в структуру JSON можно при  помощи оператора `->`.
User::where('contacts->phone->home', 1234);

Новые методы для тестирования seeElement() и dontSeeElement()

Если на странице есть такой элемент

<image width="100" height="50">

Можно проверить его наличие при помощи такого теста:

$this->seeElement('image', ['width' => 100, 'height' => 50]);

Или проверить отсутствие элемента c классом video

$this->dontSeeElement('image', ['class' => 'video']);

Малоизвестные плюшки

Вы знали, что уже можно делать так?

User::whereNameAndEmail('jon', 'jon@theWall.com')->first();
User::whereNameAndEmailOrPhone('jon', 'jon@theWall.com', '123321')->first();
DB::table('users')->whereEmailOrUsername('mail@mail.com', 'themsaid')->first();

Автор: Rencom

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js