Створення та редагування постів
Який чудовий час. У нас з'явився новий суперкрутий блог, люди сперечаються в коментарях, і у нас нарешті з'явився час для програмування. Хоча нам подобається Adminer, писати в ньому статті для блогу не дуже зручно. Можливо, зараз саме час додати просту форму для додавання нових постів прямо з нашого додатка. Давайте зробимо це.
Почнемо з розробки користувацького інтерфейсу:
1. На головній сторінці додамо посилання „Написати новий пост“.
- Воно відобразить форму із заголовком і текстовою областю для вмісту.
3. Коли ви натиснете кнопку „Зберегти“, вона збереже запис у блозі.
Пізніше ми також додамо аутентифікацію і дозволимо додавати нові повідомлення тільки користувачам, які увійшли в систему. Який код нам потрібно написати, щоб він працював?
1. Створіть новий презентер із формою для додавання постів.
- Визначте зворотний виклик, який буде спрацьовувати після успішного відправлення форми і який збереже нове повідомлення в базі даних.
3. Створіть новий шаблон для форми. 4. Додайте посилання на форму в шаблон головної сторінки.
Новий презентер
Назвіть новий презентер EditPresenter
і збережіть його в
app/Presentation/Edit/
. Йому також необхідно під'єднатися до бази даних,
тому тут ми знову пишемо конструктор, який потребуватиме під'єднання
до бази даних:
Форма для збереження повідомлень
Форми та компоненти вже розглядалися, коли ми додавали підтримку коментарів. Якщо ви заплуталися в темі, подивіться як працюють форми і компоненти ще раз, ми почекаємо тут ;)
Тепер додайте цей метод у EditPresenter
:
Збереження нового поста з форми
Додамо метод обробника:
Невелике пояснення: цей метод витягує значення з форми, вставляє їх у базу даних, створює повідомлення для користувача про успішну публікацію посту і перенаправляє на сторінку, де цей пост опубліковано, щоб ви могли побачити, який він має вигляд.
Сторінка для створення нового поста
Давайте просто створимо шаблон (app/Presentation/Edit/create.latte
):
Тепер усе має бути зрозуміло. Останній рядок показує форму, яку ми збираємося створити.
Ми могли б також створити відповідний метод renderCreate
, але це не
обов'язково. Нам не потрібно отримувати дані з бази даних і передавати
їх у шаблон, тому цей метод буде порожнім. У таких випадках метод може
взагалі не існувати.
Посилання для створення постів
Ви, ймовірно, вже знаєте, як додати посилання на EditPresenter
та його
дію create
. Спробуйте.
Просто додайте у файл app/Presentation/Home/default.latte
:
Редагування постів
Давайте також додамо можливість редагувати наявні повідомлення. Це
буде досить просто – у нас уже є postForm
, і ми можемо
використовувати її і для редагування.
Ми додамо нову сторінку edit
до EditPresenter
:
І створіть шаблон Edit/edit.latte
:
І поновіть метод postFormSucceeded
, який зможе або додавати новий пост
(як зараз), або редагувати наявні:
Якщо вказано параметр id
, це означає, що пост редагується. У
цьому випадку ми перевіримо, чи дійсно пост існує, і якщо так, то
оновимо його в базі даних. Якщо id
не вказано, це означає, що буде
додано новий пост.
Але звідки береться id
? Це параметр, що передається методу
renderEdit
.
Тепер ви можете додати посилання для зміни поста в шаблон
app/Presentation/Post/show.latte
:
Підіб'ємо підсумок
Блог працює, люди швидко коментують, і ми більше не покладаємося на Адміна для додавання нових постів. Блог повністю незалежний, і навіть звичайні люди можуть розміщувати там свої повідомлення. Але зачекайте, це, напевно, не нормально, що будь-хто, я маю на увазі справді будь-яка людина в Інтернеті, може написати в нашому блозі. Потрібна певна форма автентифікації, щоб тільки ті користувачі, які увійшли в систему, могли розміщувати повідомлення. Ми додамо це в наступному розділі.