Ребят здравствуйте подскажите пожалуйста 1 вопрос есть пара статей в базе, Мне нужно при заходе на роут получить объект статьи по id и после этого удалить статью. Если статьи с таким id нет, то выдавать соответствующее сообщение. Если же статья была, то вывести объект с помощью var_dump после удаления.
Роут добавил,Метод в абстрактном классе (получение id статьи добавил), в контролере метод написал, Но работает совсем не так как нужно, он удаляет статьи если в методе контроллера указывать id напрямую так
public function delete(): void
{
$article = Article::getById(7);
if ($article == $id) {
echo 'Статья удалена';
} $article->delete();
var_dump($article);
}
но мне нужно что-бы статьи удалялись в зависимости от того какой id вводишь в адресной строке сейчас пишу так, то есть если такой id есть удалять статью если нет выводить сообщение о том что такой статьи нет в базе Но так он не хочет работать и статью не удаляет из базы не совсем понимаю что делать дальше так как только учусь
public function delete($id): void
{
$article = Article::getById($id);
if ($article == $id) {
echo 'Статья удалена';
} $article->delete();
var_dump($article);
}
полностью код из всех файлов
файл ArticleController.php https://sharecodesnippet.com/163
файл routes.php https://sharecodesnippet.com/164
файл ActiveRecordEntity.php https://sharecodesnippet.com/165
Вот у вас в роутах реализуется просмотр:
'~^articles/(\d+)$~' => [\MyProject\Controllers\ArticlesController::class, 'view'],
Что здесь указано? Здесь указано что некий урл вида articles/(\d+) связан с методом view контроллера. Знаете, что такое (\d+)? Это регулярное выражение. Не вдаваясь в подробности регулярок и как реализована передача параметра в контроллер, работает это так: по шаблону регулярки (\d+) из урла выцепляется ИД и передается как аргумент в метод view(int $articleId).
Следовательно, вам нужно сделать что? Нарисовать схожий шаблон урла в роутах:
'~^articles/delete/(\d+)$~' => [\MyProject\Controllers\ArticlesController::class, 'delete'],
И объявить метод delete как:
public function delete(int $id): void
{
var_dump($id);
// дальше делайте что хотите
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости