Краткий обзор нововведений в Laravel 5.2

в 15:30, , рубрики: laravel, laravel5, laravel5.2, php

image

В самом начале этой недели, в понедельник, состоялся официальный релиз Laravel 5.2.
В новой версии были улучшены такие вещи, как авторизация, «связывание» модели с route и другие.
Более подробно под катом.

Генерация представлений для авторизации

Теперь вы можете при помощи одной команды сгенерировать чистые и совместимые с Bootstrap представления (view) для авторизации, регистрации и восстановление пароля пользователей.

php artisan make:auth

Однако, это стоит использовать лишь для новых, только что созданных, приложений.

Валидация массивов

Если вы работаете с массивом полей формы, то теперь валидатор в Laravel 5.2 умеет работать с массивами!
Например, если вы создаёте более одного пользователя за один раз, то вы можете сделать так:

$validator = Validator::make($request->all(), [
    'person.*.phone' => 'unique:users'
]);

В данном примере, каждый из пользователей должен иметь уникальный номер телефона.

Или же, если вы создаете свой Request:

    public function rules()
    {
        return [
            'person.*.phone' => 'unique:users'
        ];
    }

Неявное «связывание» модели с rout'ом

Больше никаких Route::model()!
Начиная с версии 5.2, можно простым тайп-хинтом указать, с какой моделью необходимо работать:

Route::get('/user/{user}', function (User $user) {
    return $user;
});

Важно упомянуть, что "{user}" и имя параметра, передаваемое в замыкание, должны совпадать.

Группировка middleware

Вы используете более одного middleware для нескольких ваших контроллеров? Вам надоело каждый раз перечислять их по одному? Не беда! Теперь можно их сгруппировать! Для этого, откройте файл аppHttpKernel.php и вы увидите, как вы можете это сделать. Например, по-умолчанию, уже создано 2 группы middleware:

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
        IlluminateSessionMiddlewareStartSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

Как это использовать в коде? Очень просто:

Route::group(['middleware' => ['web']], function () {
    //
});

Лимит запросов

Теперь вы можете задать лимит запросов за одну минуту с одного IP адреса:

Route::get('/api/users', ['middleware' => 'throttle:60,1', function () {
    //
}]);

В данном примере, мы ограничиваем количество запросов с одного IP до 60 в минуту.

Улучшение Global Scopes в Eloquent

В Laravel 5.2 появилась возможность создавать свои области видимости для Eloquent. Это позволяет использовать их для каждого запроса к определенной модели.

Автор: dMarley

Источник

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


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