Создание php MVC приложения. Главная страница кабинета
Сегодня нашей задачей будет создание главной страницы кабинета. Данная страница предполагает довольно приличную по объему верстку, поэтому я решил использовать готовый шаблон для того, чтобы как можно быстрее перейти к решению других более интересных и актуальных для вас задач. Шаблон вы можете скачать по ссылке.
После создания шаблона страницы нам нужно создать контроллер и модель главной страницы кабинета. В контроллере мы как всегда объявляем приватное свойство — шаблон для отрисовки, а также метод по умолчанию (index), который будет отрисовывать страницу с некоторыми данными, которые хранятся в массиве pageData. Для начала мы выведем на страницу небольшую общую статистику — количество заказов, товаров и пользователей.
Для этого в модели CabinetModel мы создадим три соответствующих метода — getOrdersCount(), getProductsCount() и getUsersCount(). Код методов идентичен за исключением названия таблицы, из которой мы получаем данные. Методы возвращают нам количество строк, а не детальные данные. Поэтому в запросе мы будем использовать функцию COUNT(). А результат мы будем получать при помощи метода fetchColumn().
Для этого в модели CabinetModel мы создадим три соответствующих метода — getOrdersCount(), getProductsCount() и getUsersCount(). Код методов идентичен за исключением названия таблицы, из которой мы получаем данные. Методы возвращают нам количество строк, а не детальные данные. Поэтому в запросе мы будем использовать функцию COUNT(). А результат мы будем получать при помощи метода fetchColumn().
Код урока (CabinetController.php)
<?php
class CabinetController extends Controller {
private $pageTpl = "/views/cabinet.tpl.php";
public function __construct() {
$this->model = new CabinetModel();
$this->view = new View();
}
public function index() {
$this->pageData['title'] = "Кабинет";
$ordersCount = $this->model->getOrdersCount();
$this->pageData['ordersCount'] = $ordersCount;
$productsCount = $this->model->getProductsCount();
$this->pageData['productsCount'] = $productsCount;
$usersCount = $this->model->getUsersCount();
$this->pageData['usersCount'] = $usersCount;
$this->view->render($this->pageTpl, $this->pageData);
}
}
?>
Код урока (CabinetModel.php)
<?php
class CabinetModel extends Model {
public function getOrdersCount() {
$sql = "SELECT COUNT(*) FROM orders";
$stmt = $this->db->prepare($sql);
$stmt->execute();
$res = $stmt->fetchColumn();
return $res;
}
public function getProductsCount() {
$sql = "SELECT COUNT(*) FROM products";
$stmt = $this->db->prepare($sql);
$stmt->execute();
$res = $stmt->fetchColumn();
return $res;
}
public function getUsersCount() {
$sql = "SELECT COUNT(*) FROM users";
$stmt = $this->db->prepare($sql);
$stmt->execute();
$res = $stmt->fetchColumn();
return $res;
}
}
?>
0 Комментариев