Чат Telegram
Группа ВКонтакте
Создание записей в блоге на PHP

Добавляем статьи в блог на PHP

В этом уроке мы с вами добавим самый главный функционал блога – добавление новых записей.

В одном из прошлых уроков мы уже добавили роут /articles/add и соответствующий экшен ArticlesController->add(). Так он выглядит сейчас:

src/MyProject/Controllers/ArticlesController.php

Код доступен только после покупки курса ООП в PHP.

Теперь давайте сделаем форму, которую можно будет заполнить в браузере и создавать через неё новые записи.

templates/articles/add.php

Код доступен только после покупки курса ООП в PHP.

Теперь сделаем набросок для контроллера, чтобы просто увидеть нашу форму.

src/MyProject/Controllers/ArticlesController.php

Код доступен только после покупки курса ООП в PHP.

Посмотрим на результат:
Форма добавления статей

Итак, в форме у нас есть 2 поля: name и text. На их основе мы должны научиться создавать статьи. Кроме того, в контроллере у нас также есть свойство user – текущий пользователь. Его нужно будет указывать автором при создании статей. Если мы соберем все эти три значения – мы сможем создать статью.

Первым делом нужно убедиться, что пользователь авторизован. Если это не так – будем кидать исключение в контроллере и ловить его во фронт-контроллере. Назовём такое исключение UnauthorizedException.

src/MyProject/Exceptions/UnauthorizedException.php

Код доступен только после покупки курса ООП в PHP.

Добавляем проверку в самом начале экшена.

src/MyProject/Controllers/ArticlesController.php

Код доступен только после покупки курса ООП в PHP.

Обрабатываем исключение во фронт-контроллере. Добавляем в конце еще один catch.

www/index.php

Код доступен только после покупки курса ООП в PHP.

И, наконец, добавляем шаблон для ошибки.

templates/errors/401.php

Код доступен только после покупки курса ООП в PHP.

Разлогиниваемся на сайте и проверяем, что ошибка действительно появляется.
Незалогиненный пользователь не может создавать статьи

Затем входим на сайт и видим, что ошибка пропала и нам снова доступна форма для создания статьи.
Добавление статьи доступно

Теперь можно создать в модели статьи метод для создания новой статьи.

src/MyProject/Models/Articles/Article.php

Код доступен только после покупки курса ООП в PHP.

Дописываем экшен:

src/MyProject/Controllers/ArticlesController.php

Код доступен только после покупки курса ООП в PHP.

Здесь мы пытаемся создать новую статью, и если возникают ошибки – то мы показываем их в шаблоне. Если же все проходит хорошо – то мы переадресовываем пользователя на страничку с новой статьёй. Давайте теперь попробуем.

Заполняем формочку по адресу http://myproject.loc/articles/add
Создание статьи

И вуаля – создалась новая статья.

Созданная статья

А теперь – за домашку.

Домашнее задание
Сделайте так, чтобы добавлять статьи могли только пользователи с правами админа. Если это не так - бросайте исключение с новым типом - Forbidden. При этом страница должна вернуть код 403.
Комментарии (29)
loader
loader
Логические задачи с собеседований