Fix LESS import error and refactor project structure
This commit is contained in:
@@ -2,24 +2,15 @@
|
||||
|
||||
namespace App\Core;
|
||||
|
||||
/**
|
||||
* View - класс для рендеринга представлений
|
||||
*/
|
||||
class View
|
||||
{
|
||||
private static string $viewsPath = '';
|
||||
|
||||
/**
|
||||
* Установить путь к директории представлений
|
||||
*/
|
||||
public static function setViewsPath(string $path): void
|
||||
{
|
||||
self::$viewsPath = rtrim($path, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить путь к директории представлений
|
||||
*/
|
||||
public static function getViewsPath(): string
|
||||
{
|
||||
if (empty(self::$viewsPath)) {
|
||||
@@ -28,9 +19,6 @@ class View
|
||||
return self::$viewsPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отрендерить представление
|
||||
*/
|
||||
public static function render(string $view, array $data = [], ?string $layout = 'main'): string
|
||||
{
|
||||
$viewPath = self::getViewsPath() . '/' . str_replace('.', '/', $view) . '.php';
|
||||
@@ -39,15 +27,12 @@ class View
|
||||
throw new \Exception("Представление не найдено: {$viewPath}");
|
||||
}
|
||||
|
||||
// Извлекаем данные в переменные
|
||||
extract($data);
|
||||
|
||||
// Буферизируем вывод контента
|
||||
ob_start();
|
||||
require $viewPath;
|
||||
$content = ob_get_clean();
|
||||
|
||||
// Если есть layout, оборачиваем контент
|
||||
if ($layout !== null) {
|
||||
$layoutPath = self::getViewsPath() . '/layouts/' . $layout . '.php';
|
||||
|
||||
@@ -63,9 +48,6 @@ class View
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Отрендерить partial (часть шаблона)
|
||||
*/
|
||||
public static function partial(string $partial, array $data = []): string
|
||||
{
|
||||
$partialPath = self::getViewsPath() . '/partials/' . $partial . '.php';
|
||||
@@ -81,49 +63,31 @@ class View
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Экранирование HTML
|
||||
*/
|
||||
public static function escape(string $value): string
|
||||
{
|
||||
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
|
||||
}
|
||||
|
||||
/**
|
||||
* Сокращенный алиас для escape
|
||||
*/
|
||||
public static function e(string $value): string
|
||||
{
|
||||
return self::escape($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Форматирование цены
|
||||
*/
|
||||
public static function formatPrice($price): string
|
||||
{
|
||||
return number_format((float)$price, 0, '', ' ') . ' ₽';
|
||||
}
|
||||
|
||||
/**
|
||||
* Форматирование даты
|
||||
*/
|
||||
public static function formatDate(string $date, string $format = 'd.m.Y'): string
|
||||
{
|
||||
return date($format, strtotime($date));
|
||||
}
|
||||
|
||||
/**
|
||||
* Форматирование даты и времени
|
||||
*/
|
||||
public static function formatDateTime(string $date, string $format = 'd.m.Y H:i'): string
|
||||
{
|
||||
return date($format, strtotime($date));
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить flash-сообщения
|
||||
*/
|
||||
public static function getFlashMessages(): array
|
||||
{
|
||||
$messages = $_SESSION['flash'] ?? [];
|
||||
@@ -131,25 +95,16 @@ class View
|
||||
return $messages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверить, авторизован ли пользователь
|
||||
*/
|
||||
public static function isAuthenticated(): bool
|
||||
{
|
||||
return isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn'] === true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверить, является ли пользователь администратором
|
||||
*/
|
||||
public static function isAdmin(): bool
|
||||
{
|
||||
return self::isAuthenticated() && isset($_SESSION['isAdmin']) && $_SESSION['isAdmin'] === true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить данные текущего пользователя
|
||||
*/
|
||||
public static function currentUser(): ?array
|
||||
{
|
||||
if (!self::isAuthenticated()) {
|
||||
@@ -165,20 +120,13 @@ class View
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Генерация URL
|
||||
*/
|
||||
public static function url(string $path): string
|
||||
{
|
||||
return '/' . ltrim($path, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Генерация URL для ассетов
|
||||
*/
|
||||
public static function asset(string $path): string
|
||||
{
|
||||
return '/assets/' . ltrim($path, '/');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user