[MVC] Полная миграция на MVC архитектуру
- Создано ядро MVC: App, Router, Controller, Model, View, Database - Созданы модели: User, Product, Category, Cart, Order - Созданы контроллеры: Home, Auth, Product, Cart, Order, Page, Admin - Созданы layouts и partials для представлений - Добавлены все views для страниц - Настроена маршрутизация с чистыми URL - Обновлена конфигурация Docker и Apache для mod_rewrite - Добавлена единая точка входа public/index.php
This commit is contained in:
51
config/app.php
Normal file
51
config/app.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Конфигурация приложения
|
||||
*/
|
||||
return [
|
||||
// Название приложения
|
||||
'name' => 'AETERNA',
|
||||
|
||||
// Режим отладки
|
||||
'debug' => true,
|
||||
|
||||
// URL приложения
|
||||
'url' => 'http://localhost',
|
||||
|
||||
// Базовый путь (для Docker)
|
||||
'base_path' => '/cite_practica',
|
||||
|
||||
// Часовой пояс
|
||||
'timezone' => 'Europe/Moscow',
|
||||
|
||||
// Локаль
|
||||
'locale' => 'ru_RU',
|
||||
|
||||
// Email администраторов (получают права администратора при регистрации)
|
||||
'admin_emails' => [
|
||||
'admin@aeterna.ru',
|
||||
'administrator@aeterna.ru',
|
||||
'aeterna@mail.ru'
|
||||
],
|
||||
|
||||
// Настройки сессии
|
||||
'session' => [
|
||||
'lifetime' => 120, // минуты
|
||||
'secure' => false,
|
||||
'http_only' => true
|
||||
],
|
||||
|
||||
// Настройки доставки
|
||||
'delivery' => [
|
||||
'default_price' => 2000,
|
||||
'free_from' => 50000, // Бесплатная доставка от этой суммы
|
||||
],
|
||||
|
||||
// Промокоды
|
||||
'promo_codes' => [
|
||||
'SALE10' => ['type' => 'percent', 'value' => 10],
|
||||
'FREE' => ['type' => 'free_delivery', 'value' => 0],
|
||||
]
|
||||
];
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
<?php
|
||||
// config/database.php
|
||||
class Database {
|
||||
private static $instance = null;
|
||||
private $connection;
|
||||
|
||||
private function __construct() {
|
||||
try {
|
||||
$this->connection = new PDO(
|
||||
"pgsql:host=localhost;dbname=aeterna_db;",
|
||||
"postgres",
|
||||
"1234"
|
||||
);
|
||||
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$this->connection->exec("SET NAMES 'utf8'");
|
||||
} catch(PDOException $e) {
|
||||
die("Ошибка подключения: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static function getInstance() {
|
||||
if (self::$instance == null) {
|
||||
self::$instance = new Database();
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public function getConnection() {
|
||||
return $this->connection;
|
||||
}
|
||||
}
|
||||
?>
|
||||
/**
|
||||
* Конфигурация базы данных
|
||||
*/
|
||||
return [
|
||||
'driver' => 'pgsql',
|
||||
'host' => '185.130.224.177',
|
||||
'port' => '5481',
|
||||
'database' => 'postgres',
|
||||
'username' => 'admin',
|
||||
'password' => '38feaad2840ccfda0e71243a6faaecfd',
|
||||
'charset' => 'utf8',
|
||||
];
|
||||
|
||||
66
config/routes.php
Normal file
66
config/routes.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Определение маршрутов приложения
|
||||
*
|
||||
* @var \App\Core\Router $router
|
||||
*/
|
||||
|
||||
// ========== Главная страница ==========
|
||||
$router->get('/', 'HomeController', 'index');
|
||||
$router->get('/home', 'HomeController', 'index');
|
||||
|
||||
// ========== Авторизация ==========
|
||||
$router->get('/login', 'AuthController', 'loginForm');
|
||||
$router->post('/login', 'AuthController', 'login');
|
||||
$router->get('/register', 'AuthController', 'registerForm');
|
||||
$router->post('/register', 'AuthController', 'register');
|
||||
$router->get('/logout', 'AuthController', 'logout');
|
||||
|
||||
// ========== Каталог и товары ==========
|
||||
$router->get('/catalog', 'ProductController', 'catalog');
|
||||
$router->get('/product/{id}', 'ProductController', 'show');
|
||||
|
||||
// ========== Корзина ==========
|
||||
$router->get('/cart', 'CartController', 'index');
|
||||
$router->post('/cart/add', 'CartController', 'add');
|
||||
$router->post('/cart/update', 'CartController', 'update');
|
||||
$router->post('/cart/remove', 'CartController', 'remove');
|
||||
$router->get('/cart/count', 'CartController', 'count');
|
||||
|
||||
// ========== Заказы ==========
|
||||
$router->get('/checkout', 'OrderController', 'checkout');
|
||||
$router->post('/order', 'OrderController', 'create');
|
||||
|
||||
// ========== Статические страницы ==========
|
||||
$router->get('/services', 'PageController', 'services');
|
||||
$router->get('/delivery', 'PageController', 'delivery');
|
||||
$router->get('/warranty', 'PageController', 'warranty');
|
||||
|
||||
// ========== Админ-панель ==========
|
||||
$router->get('/admin', 'AdminController', 'dashboard');
|
||||
|
||||
// Управление товарами
|
||||
$router->get('/admin/products', 'AdminController', 'products');
|
||||
$router->get('/admin/products/add', 'AdminController', 'addProduct');
|
||||
$router->post('/admin/products/add', 'AdminController', 'storeProduct');
|
||||
$router->get('/admin/products/edit/{id}', 'AdminController', 'editProduct');
|
||||
$router->post('/admin/products/edit/{id}', 'AdminController', 'updateProduct');
|
||||
$router->post('/admin/products/delete/{id}', 'AdminController', 'deleteProduct');
|
||||
|
||||
// Управление категориями
|
||||
$router->get('/admin/categories', 'AdminController', 'categories');
|
||||
$router->get('/admin/categories/add', 'AdminController', 'addCategory');
|
||||
$router->post('/admin/categories/add', 'AdminController', 'storeCategory');
|
||||
$router->get('/admin/categories/edit/{id}', 'AdminController', 'editCategory');
|
||||
$router->post('/admin/categories/edit/{id}', 'AdminController', 'updateCategory');
|
||||
$router->post('/admin/categories/delete/{id}', 'AdminController', 'deleteCategory');
|
||||
|
||||
// Управление заказами
|
||||
$router->get('/admin/orders', 'AdminController', 'orders');
|
||||
$router->get('/admin/orders/{id}', 'AdminController', 'orderDetails');
|
||||
$router->post('/admin/orders/{id}/status', 'AdminController', 'updateOrderStatus');
|
||||
|
||||
// Управление пользователями
|
||||
$router->get('/admin/users', 'AdminController', 'users');
|
||||
|
||||
Reference in New Issue
Block a user