Список с фильтрацией
Создаем файлы моделей 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 .= "".$row["name"]." \n";
$html .= "".$row["department"]." \n";
$html .= "".$this -> getEnumTitle("category", $row["category"])." \n";
$html .= "".$row["price"]." \n";
$html .= " \n";
}
return $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";
| Наименование | Направление | Категория | Цена |
|---|
Предыдущий раздел
Слайдер с баннерами