Added invisible for products.

This commit is contained in:
kirill.khorkov
2026-01-03 19:22:40 +03:00
parent 4a8d4f8c3f
commit 8682d4ade1
5 changed files with 44 additions and 6 deletions

View File

@@ -50,6 +50,7 @@ class ProductController extends Controller
$this->view('products/catalog', [ $this->view('products/catalog', [
'user' => $user, 'user' => $user,
'isLoggedIn' => true,
'isAdmin' => $isAdmin, 'isAdmin' => $isAdmin,
'categories' => $categories, 'categories' => $categories,
'subcategories' => $subcategories, 'subcategories' => $subcategories,
@@ -83,6 +84,7 @@ class ProductController extends Controller
'product' => $product, 'product' => $product,
'similarProducts' => $similarProducts, 'similarProducts' => $similarProducts,
'user' => $this->getCurrentUser(), 'user' => $this->getCurrentUser(),
'isLoggedIn' => true,
'isAdmin' => $this->isAdmin() 'isAdmin' => $this->isAdmin()
]); ]);
} }

View File

@@ -38,22 +38,41 @@ class Database
public function query(string $sql, array $params = []): array public function query(string $sql, array $params = []): array
{ {
$stmt = $this->connection->prepare($sql); $stmt = $this->connection->prepare($sql);
$stmt->execute($params); $this->bindParams($stmt, $params);
$stmt->execute();
return $stmt->fetchAll(); return $stmt->fetchAll();
} }
public function queryOne(string $sql, array $params = []): ?array public function queryOne(string $sql, array $params = []): ?array
{ {
$stmt = $this->connection->prepare($sql); $stmt = $this->connection->prepare($sql);
$stmt->execute($params); $this->bindParams($stmt, $params);
$stmt->execute();
$result = $stmt->fetch(); $result = $stmt->fetch();
return $result ?: null; return $result ?: null;
} }
private function bindParams(\PDOStatement $stmt, array $params): void
{
foreach ($params as $index => $param) {
$paramNum = $index + 1;
if (is_bool($param)) {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_BOOL);
} elseif (is_int($param)) {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_INT);
} elseif (is_null($param)) {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_NULL);
} else {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_STR);
}
}
}
public function execute(string $sql, array $params = []): bool public function execute(string $sql, array $params = []): bool
{ {
$stmt = $this->connection->prepare($sql); $stmt = $this->connection->prepare($sql);
return $stmt->execute($params); $this->bindParams($stmt, $params);
return $stmt->execute();
} }
public function lastInsertId(): string public function lastInsertId(): string

View File

@@ -75,7 +75,23 @@ abstract class Model
); );
$stmt = $this->db->getConnection()->prepare($sql); $stmt = $this->db->getConnection()->prepare($sql);
$stmt->execute(array_values($data));
// Правильно биндим параметры с учетом типов
$params = array_values($data);
foreach ($params as $index => $param) {
$paramNum = $index + 1;
if (is_bool($param)) {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_BOOL);
} elseif (is_int($param)) {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_INT);
} elseif (is_null($param)) {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_NULL);
} else {
$stmt->bindValue($paramNum, $param, \PDO::PARAM_STR);
}
}
$stmt->execute();
return (int) $stmt->fetchColumn(); return (int) $stmt->fetchColumn();
} }

View File

@@ -38,7 +38,7 @@
<body> <body>
<div id="notification" class="notification"></div> <div id="notification" class="notification"></div>
<?= \App\Core\View::partial('header', ['user' => $user ?? null, 'isLoggedIn' => $isLoggedIn ?? false, 'isAdmin' => $isAdmin ?? false]) ?> <?= \App\Core\View::partial('header', ['user' => $user ?? null, 'isLoggedIn' => $isLoggedIn ?? \App\Core\View::isAuthenticated(), 'isAdmin' => $isAdmin ?? \App\Core\View::isAdmin()]) ?>
<main> <main>
<?= $content ?> <?= $content ?>

View File

@@ -1638,7 +1638,8 @@ p, li, span {
input[type="text"], input[type="text"],
input[type="email"], input[type="email"],
input[type="tel"] { input[type="tel"],
input[type="password"] {
.input-base(); .input-base();
} }