91 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						||
<html lang="ru">
 | 
						||
<head>
 | 
						||
    <meta charset="UTF-8" />
 | 
						||
    <title>Описание задачи: Реализация списка задач</title>
 | 
						||
    <style>
 | 
						||
        body {
 | 
						||
            font-family: Arial, sans-serif;
 | 
						||
            line-height: 1.6;
 | 
						||
            max-width: 800px;
 | 
						||
            margin: 2rem auto;
 | 
						||
            padding: 0 1rem;
 | 
						||
            color: #333;
 | 
						||
        }
 | 
						||
        h1, h2 {
 | 
						||
            color: #2c3e50;
 | 
						||
        }
 | 
						||
        ul {
 | 
						||
            margin-top: 0;
 | 
						||
        }
 | 
						||
        blockquote {
 | 
						||
            border-left: 4px solid #ccc;
 | 
						||
            padding-left: 1rem;
 | 
						||
            color: #666;
 | 
						||
            margin: 1rem 0;
 | 
						||
            font-style: italic;
 | 
						||
            background-color: #f9f9f9;
 | 
						||
        }
 | 
						||
        code {
 | 
						||
            background-color: #f4f4f4;
 | 
						||
            padding: 0.2em 0.4em;
 | 
						||
            border-radius: 3px;
 | 
						||
            font-family: Consolas, monospace;
 | 
						||
        }
 | 
						||
    </style>
 | 
						||
</head>
 | 
						||
<body>
 | 
						||
<h1>Описание задачи: Реализация списка задач с возможностью изменения статуса выполнения</h1>
 | 
						||
 | 
						||
<h2>Цель</h2>
 | 
						||
<p>Создать веб-интерфейс для отображения списка задач с возможностью помечать задачи как выполненные или невыполненные. Изменения статуса задачи должны отправляться на сервер асинхронно (AJAX) и сохраняться в кеше.</p>
 | 
						||
 | 
						||
<h2>Основные требования</h2>
 | 
						||
<blockquote>К редактированию доступны только файлы <code>models/Task.php</code> и <code>views/task/index.php</code>.</blockquote>
 | 
						||
 | 
						||
<ul>
 | 
						||
    <li>Задача содержит поля:
 | 
						||
        <ul>
 | 
						||
            <li><code>id</code> — уникальный идентификатор задачи.</li>
 | 
						||
            <li><code>order</code> — порядок сортировки.</li>
 | 
						||
            <li><code>title</code> — название задачи.</li>
 | 
						||
            <li><code>checked</code> — булево значение, указывающее, выполнена задача или нет.</li>
 | 
						||
        </ul>
 | 
						||
    </li>
 | 
						||
    <li>Изначальные данные хранятся в константе <code>INIT_DATA</code>.</li>
 | 
						||
    <li>Данные загружаются и сохраняются в кеш приложения (<code>Yii::$app->cache</code>).</li>
 | 
						||
    <li>Необходимо реализовать методы:
 | 
						||
        <ul>
 | 
						||
            <li><code>search($params)</code></li>
 | 
						||
            <li><code>save()</code> — сохраняет текущий объект задачи в кеш.</li>
 | 
						||
            <li><code>findOne($id)</code> — возвращает задачу по идентификатору.</li>
 | 
						||
        </ul>
 | 
						||
    </li>
 | 
						||
    <li>Валидация поля <code>checked</code> как булевого значения.</li>
 | 
						||
    <li>Определены метки атрибутов для отображения в интерфейсе.</li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<h2>Представление (<code>index.php</code>)</h2>
 | 
						||
<ul>
 | 
						||
    <li>Отображает список задач в виде таблицы с помощью <code>GridView</code>.</li>
 | 
						||
    <li>Колонки таблицы:
 | 
						||
        <ul>
 | 
						||
            <li><code>id</code> — идентификатор задачи.</li>
 | 
						||
            <li><code>title</code> — название задачи.</li>
 | 
						||
            <li><code>checked</code> — чекбокс, отражающий статус выполнения задачи.</li>
 | 
						||
        </ul>
 | 
						||
    </li>
 | 
						||
    <li>При изменении состояния чекбокса отправляется AJAX POST-запрос на <code>\app\controllers\TaskController::actionSetState</code>.</li>
 | 
						||
    <li>В случае ошибки запроса состояние чекбокса восстанавливается.</li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<h2>Технические детали</h2>
 | 
						||
<ul>
 | 
						||
    <li>Данные задач не хранятся в базе, а кэшируются в памяти приложения.</li>
 | 
						||
    <li>Сортировка задач происходит по полю <code>order</code> в порядке возрастания.</li>
 | 
						||
    <li>AJAX-запросы позволяют обновлять статус задачи без перезагрузки страницы.</li>
 | 
						||
    <li>Валидация и сохранение данных реализованы в модели <code>Task</code>.</li>
 | 
						||
    <li>Представление использует стандартные компоненты Yii2 (<code>GridView</code>, <code>ArrayDataProvider</code>).</li>
 | 
						||
</ul>
 | 
						||
</body>
 | 
						||
</html> |