Тема
Первая страница
Сделаем страницу списка задач без базы данных. Сначала важна цепочка «маршрут → контроллер → шаблон», а хранение добавим в следующем уроке.
Шаг 1. Описать результат
text
При открытии /tasks пользователь видит заголовок «Мои задачи»
и пустое состояние «Задач пока нет».Это лучше просьбы «сделай страницу»: результат можно открыть и проверить.
Шаг 2. Создать контроллер
Штатный генератор Laravel:
bash
php artisan make:controller TaskControllerКоманда создаёт каркас в app/Http/Controllers/. Откройте файл и добавьте метод index, который возвращает представление:
php
public function index()
{
return view('tasks.index');
}Шаг 3. Добавить маршрут
В routes/web.php:
php
use App\Http\Controllers\TaskController;
Route::get('/tasks', [TaskController::class, 'index'])
->name('tasks.index');Имя tasks.index позволяет ссылаться на маршрут без повторения адреса.
Шаг 4. Создать шаблон
Файл resources/views/tasks/index.blade.php:
blade
<main>
<h1>Мои задачи</h1>
<p>Задач пока нет.</p>
</main>Это учебный минимум. В настоящем проекте используйте общий макет и компоненты, принятые в его документации.
Шаг 5. Добавить проверку
Создайте функциональный тест:
bash
php artisan make:test TaskPageTestСценарий:
php
public function test_tasks_page_is_available(): void
{
$this->get('/tasks')
->assertOk()
->assertSee('Мои задачи')
->assertSee('Задач пока нет');
}Запустите только этот тест штатным способом проекта. Точная команда может отличаться, если проект использует контейнер или Pest.
Попробуйте сейчас
Перед изменением заполните шаблон промпта: «Цель — страница /tasks; менять только маршрут, контроллер, шаблон и тест; не подключать базу; готово, когда проходит один тест и показан diff».
Что проверить глазами
- Открывается ли
/tasks? - Есть ли один понятный заголовок?
- Проходит ли тест?
- Не изменились ли посторонние файлы?
- Понятно ли сравнение строк?
Урок пройден, если
Страница открывается, целевой тест проходит, а вы можете показать роль каждого из трёх файлов.
Куда дальше
Добавьте модель, миграцию и учебные данные.