Я пытаюсь написать простой блог, чтобы получить опыт работы с php.В блоге есть не только сообщения, но и категории, к которым может принадлежать сообщение.(пост с заголовком "lorem ipsum" имеет категорию 1, что является ужасом для, например) есть еще две таблицы, но для этого они не нужны.
table: posts table: categories
id = 1* category = Fantasy
c_Id = 2** id = 2*
title = hello world
subheading = greeting the world
content = hello.
Когда я нажимаю на категорию "Фэнтези" в моем блоге, она должна получить все сообщения с категорией, на которую я нажал.У меня есть самодельный фреймворк с CategoryRepository, в котором я взаимодействую с базой данных, и PostsController, который имеет функции для отображения сайтов в моем блоге.
Когда я нажимаю на категорию, она приводит меня к этому URL («ужас» представляет разные категории):
http://localhost:8888/blog/public/index.php/categories/Horror
У меня есть эта функцияв моем PostsController, в котором я пытаюсь получить имя категории из URL-адреса (мне не удалось получить его с сеансом / POST, даже если мне нужно динамическое имя категории, и я строго хочу, чтобы имя категории и не идентификатор категории в URL-адресе.)
public function categoryOverview() {
$url = 'http://localhost:8888/blog/public/index.php/categories/Horror';
$endOfUrl = basename($url);
if($endOfUrl == "Horror") {
$categoryName = "Horror";
}
$categories = $this->categoryRepository->allCategories();
$idFromCategory = $this->categoryRepository->idFromCategory($categoryName);
$this->render("cats/categoryOverview", [
'id' => $idFromCategory,
'categories' => $categories,
]);
}
ОБНОВЛЕНИЕ: Мне удалось динамически получить конец URL-адреса (вероятно, уродливый код, но этоработал как минимум):
public function categoryOverview() {
$url = $_SERVER['REQUEST_URI'];
$categoryName = basename($url);
$categories = $this->categoryRepository->allCategories();
$idFromCategory = $this->categoryRepository-
>getPostFromCategory($categoryName);
$this->render("cats/categoryOverview", [
'id' => $idFromCategory,
'categories' => $categories,
]);
}
UDAPTE END
И это idFromCategory () в CategoryRepository, который должен получить идентификатор и категорию из категории, котораяв URL, который я нажимал:
public function idFromCategory($categoryName) {
$table = $this->getTableName();
$model = $this->getModelName();
$stmt = $this->pdo->prepare(
"SELECT * FROM `$table` WHERE category = :category");
$stmt->execute(['category' => $categoryName]);
$stmt->setFetchMode(PDO::FETCH_CLASS, $model);
$idFromCategory = $stmt->fetch(PDO::FETCH_CLASS);
var_dump($idFromCategory);
return $idFromCategory;
}
Могу ли я сделать это с помощью сеанса?Категории, по которым можно щелкнуть, находятся в заголовке на панели навигации, я пролистываю категории в таблице с foreach, чтобы поместить их в меню, это отлично работает.Но когда я помещаю $ _SESSION ['categoryID'] = $ category-> category;Я бы всегда получал ID последних категорий.
Должен быть более простой способ, чем то, что я пытаюсь сделать, но как?
Не знаю, почему, но я просто не могу получить список всех постов одной категории, когда нажимаю на категорию, хотя это звучит так просто.
Я надеюсь, что кто-нибудь понимает, что я пишу здесь: D Я действительно только начинаю программировать на php, поэтому я очень надеюсь, что кто-то может помочь мне с этим;даже если он просто говорит, что мой код ужасен.
Заранее спасибо:)