Pull to refresh

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

Reading time2 min
Views19K
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 для нескольких ваших контроллеров? Вам надоело каждый раз перечислять их по одному? Не беда! Теперь можно их сгруппировать! Для этого, откройте файл аpp\Http\Kernel.php и вы увидите, как вы можете это сделать. Например, по-умолчанию, уже создано 2 группы middleware:
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::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. Это позволяет использовать их для каждого запроса к определенной модели.
Tags:
Hubs:
Total votes 16: ↑11 and ↓5+6
Comments7

Articles