# Описание задачи: Реализация списка задач с возможностью изменения статуса выполнения ## Цель Создать веб-интерфейс для отображения списка задач с возможностью помечать задачи как выполненные или невыполненные. Изменения статуса задачи должны отправляться на сервер асинхронно (AJAX) и сохраняться в кеше. ## Основные требования > К редактированию доступны только файлы `models/Task.php` и `views/task/index.php`. - Задача содержит поля: - `id` — уникальный идентификатор задачи. - `order` — порядок сортировки. - `title` — название задачи. - `checked` — булево значение, указывающее, выполнена задача или нет. - Изначальные данные хранятся в константе `INIT_DATA`. - Данные загружаются и сохраняются в кеш приложения (`Yii::$app->cache`). - Необходимо реализовать методы: - `search($params)` - `save()` — сохраняет текущий объект задачи в кеш. - `findOne($id)` — возвращает задачу по идентификатору. - Валидация поля `checked` как булевого значения. - Определены метки атрибутов для отображения в интерфейсе. ## Представление (`index.php`) - Отображает список задач в виде таблицы с помощью `GridView`. - Колонки таблицы: - `id` — идентификатор задачи. - `title` — название задачи. - `checked` — чекбокс, отражающий статус выполнения задачи. - При изменении состояния чекбокса отправляется AJAX POST-запрос на `\app\controllers\TaskController::actionSetState`. - В случае ошибки запроса состояние чекбокса восстанавливается. ## Технические детали - Данные задач не хранятся в базе, а кэшируются в памяти приложения. - Сортировка задач происходит по полю `order` в порядке возрастания. - AJAX-запросы позволяют обновлять статус задачи без перезагрузки страницы. - Валидация и сохранение данных реализованы в модели `Task`. - Представление использует стандартные компоненты Yii2 (`GridView`, `ArrayDataProvider`).