Request::validate([...]) или Form Request класс. Правила: required, email, unique:users, confirmed, max, min.

Сообщения об ошибках в Blade: @error("field") $message @enderror. old("field") сохраняет ввод.

Form Request инкапсулирует rules(), authorize() для сложных форм.

Валидация
$validated = $request->validate([
    'email' => 'required|email|unique:users',
    'password' => 'required|min:8|confirmed',
]);
Blade
<input name="email" value="{{ old('email') }}">
@error('email')<span>{{ $message }}</span>@enderror
На заметку: Выносите сложную валидацию в Form Request — чище контроллер.
Игра Упражнение

Содержание книги

Всего: 15 глав

Книга, игра и упражнения доступны без регистрации. Видеоуроки — после оплаты курса.

Laravel — PHP-фреймворк для веб-приложений с элегантным синтаксисом. Включает роутинг, ORM Eloquent, шаблонизатор Blade, очереди, кеш, аутентификацию и экосистему пакетов.Философия: выразительный код, convention over con...
app/ — Models, Http/Controllers, Providers. bootstrap/ — загрузка. config/ — настройки. database/ — migrations, seeders, factories.public/ — index.php, точка входа веб-сервера. resources/views — Blade. routes/web.php и a...
Маршруты в routes/web.php (сессии, CSRF) и routes/api.php (stateless, prefix /api). Route::get, post, put, delete, resource.Именованные маршруты: -&gt;name(&quot;posts.index&quot;). Группы: prefix, middleware, controller...
Контроллеры в app/Http/Controllers группируют логику ответов. php artisan make:controller PostController --resource.Методы: index, create, store, show, edit, update, destroy. Внедрение зависимостей в конструктор или мето...
Blade компилируется в PHP. {{ $var }} — экранированный вывод. {!! $html !!} — без экранирования (осторожно XSS).@extends, @section, @yield — наследование. @include, @component. @if, @foreach, @auth. @csrf в формах.layout...
Миграции — версионирование схемы БД. php artisan make:migration create_posts_table. Schema::create, table-&gt;string, text, timestamps.php artisan migrate — применить; migrate:rollback — откат. foreignId, constrained() д...
Eloquent — Active Record ORM. Модель Post = таблица posts. Post::all(), find($id), create(), update(), delete().Mass assignment: $fillable или $guarded. Аксессоры/мутаторы, casts (datetime, json, boolean). Scopes: scopeP...
hasOne, hasMany, belongsTo, belongsToMany. belongsTo — пост принадлежит user. hasMany — user имеет много posts.Миграции: foreign key. Доступ: $post-&gt;user, $user-&gt;posts. Eager: User::with(&quot;posts&quot;).Pivot та...
Request::validate([...]) или Form Request класс. Правила: required, email, unique:users, confirmed, max, min.Сообщения об ошибках в Blade: @error(&quot;field&quot;) $message @enderror. old(&quot;field&quot;) сохраняет вв...
Middleware — фильтр HTTP запроса/ответа. auth, guest, throttle, verified из коробки.Свой: php artisan make:middleware CheckAge, register в bootstrap/app.php или Kernel. Route::middleware([...]).terminate() для логики пос...
Laravel Breeze, Jetstream, Fortify — готовые стартеры. Breeze — минимальный login/register.auth()-&gt;user(), @auth в Blade, middleware auth. Gates и Policies для авторизации (кто может что).Hash::make() для паролей. Rem...
routes/api.php, middleware api, Sanctum или Passport для токенов. Route::apiResource, return response()-&gt;json().API Resources (PostResource) форматируют JSON. Pagination: Post::paginate() автоматически в JSON.Версиони...
Jobs для фоновых задач: отправка почты, обработка файлов. dispatch(new SendEmail($user)). Очередь: database, redis, sqs.Events и Listeners — слабая связность: OrderPlaced -&gt; SendNotification. php artisan queue:work.Fa...
Cache::get/put/remember, драйверы: file, redis, database. config(&quot;app.name&quot;), .env + config/*.php.php artisan config:cache для prod. View composers, shared data. Session в file/database/redis.Не вызывайте env()...
Production: APP_ENV=production, APP_DEBUG=false. composer install --no-dev --optimize-autoloader.php artisan config:cache, route:cache, view:cache, event:cache. Очередь через supervisor. Scheduler: cron * * * * php artis...

Интерактивная игра

Финальный тест в формате Duolingo: 225 вопросов по всем темам курса.

Начать игру