Список с фильтрацией
Создаем файлы моделей models/price_categories.model.php и models/price_list.model.php
class Price_categories extends Model { protected $name = "Разделы прайс листа"; protected $model_elements = [ ["Активировать", "bool", "active", ["on_create" => true]), ["Название", "char", "name", ["required" => true]), ["Позиция", "order", "order"] ); } class Price_list extends Model { protected $name = "Прайс лист"; protected $model_elements = [ ["Активировать", "bool", "active", ["on_create" => true]), ["Название", "char", "name", ["required" => true]), ["Направление", "char", "department"], ["Категория", "enum", "category", ["foreign_key" => "Price_categories", "order_asc" => "name"]), ["Цена", "int", "price"], ["Позиция", "order", "order"] ); }
Вносим название модели в файл config/models.php
$mvActiveModels = ['pages', 'blocks', ... , 'price_categories', 'price_list'];
Создаем SQL таблицы в базе данных, после чего модели станут работать в административной панели
CREATE TABLE `price_categories` ( `id` int(11) NOT NULL, `active` tinyint(4) NOT NULL, `name` varchar(250) NOT NULL, `order` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `price_categories` ADD PRIMARY KEY (`id`); ALTER TABLE `price_categories` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; CREATE TABLE `price_list` ( `id` int(11) NOT NULL, `active` tinyint(4) NOT NULL, `name` varchar(250) NOT NULL, `department` varchar(250) NOT NULL, `category` int(11) NOT NULL, `price` int(11) NOT NULL, `order` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `price_list` ADD PRIMARY KEY (`id`), ADD KEY `category` (`category`); ALTER TABLE `price_list` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Создаем файл шаблона views/view-price.php и вносим маршрут к шаблону в файл config/routes.php
$mvFrontendRoutes = [ ... , "price-list/" => "view-price.php" ];
Добавляем методы в файл модели price_list.model.php
public function display() { $params = $this -> filter -> getConditions(); $params["order->asc"] = "name"; $params["active"] = 1; $rows = $this -> select($params); $html = ""; if(!count($rows)) return "\n"; foreach($rows as $row) { $row["price"] = $row["price"] ? $row["price"]." руб" : "По запросу"; $html .= " Цен по заданным параметрам не найдено. \n"; $html .= " \n"; } return $html; }".$row["name"]." \n"; $html .= "".$row["department"]." \n"; $html .= "".$this -> getEnumTitle("category", $row["category"])." \n"; $html .= "".$row["price"]." \n"; $html .= "
Содержимое файла шаблона view-price.php
$mv -> seo -> mergeParams("Прайс-лист"); $mv -> price_list -> runFilter(["name", "department", "category", "price"]); $mv -> price_list -> filter -> setEnumEmptyValueTitle("category", "Все категории"); $mv -> price_list -> filter -> filterValuesList("category", ["active" => 1]); include $mv -> views_path."main-header.php";
Наименование | Направление | Категория | Цена |
---|
Предыдущий раздел
Слайдер с баннерами