Реализация возможности редактирования и постраничный вывод
Задача
Разработайте веб-приложение, позволяющего пользователю управлять списком заметок о посадках на приусадебном участке.
Одна заметка описывается следующими полями:
- Дата выполнения работ. Реально существующая дата.
- Тип работы, один на выбор:
- Посадка
- Подготовка почвы
- Сбор урожая
- Стрижка травы
- Уборка
- Название культуры, строка, не обязательное поле.
- Объём работ, вещественное число.
- Единица измерения объёма, один на выбор:
- Ряд
- Грядка
- Квадратный метр
- Штука
- Описание, текстовое поле в произвольном формате.
Приложение должно позволять пользователю:
- Просматривать список заметок, отсортированный по дате выполнения. В списке надо показывать дату и тип работ.
- Добавлять новую заметку.
- Просматривать детальную информацию о заметке.
- Редактировать заметку.
- Просматривать список заметок по страницам.
Технические аспекты реализации
На настоящий момент вы должны успешно решать первые две задачи по аналогии с предыдущими работами.
Единственное изменение, которое вам потребуется сделать, — это добавить уникальный идентификатор к элементам списка. Для удобства работы с ними лучше их сделать целыми числами.
Просмотр информации о заметке
- Добавьте в приложение обработчик маршрута
/notes/INTEGER
. Используйте обработчик маршрута, основанный на классах - Используйте переданное число как уникальный идентификатор вашей заметки.
- В модели выполняйте поиск по данному идентификатору.
- В контроллере в зависимости от результатов либо показывайте страницу с информацией об объекте, либо перенаправляйте на страницу, которая будет содержать информацию о том, что ресурс не найден.
Для обработки ситуации с не найденной информацией подключите дополнение not_found
.
Добавление возможности редактирования информации
- Добавьте на страницу с информацией о заметке ссылку на редактирование,
notes/ID/edit
. - При переходе по данному маршруту извлекайте из хранилища треугольник по идентификатору. Если треугольника нет, тогда перенаправляйте пользователя на список с сообщением, что данного треугольника не существует.
- На странице реализуйте логику работы, схожую с добавлением нового элемента.
Добавление возможности постраничного вывода информации
- Добавьте новый параметр для страницы вывода списка — номер страницы.
- Если параметр не указан, тогда считаем что пользователь выбрал первую страницу.
- Параметры передаются в модель, которая возвращает массив из заметок, соответствующий данной странице.
- Помимо данных модель также должна вернуть информацию для формирования навигационной панели:
- Количество страниц, которое доступно сейчас.
- Текущая страница.