Для моделей с динамическими uri используйте одну запись в таблице моделей и один request и дописывайте необходимую php логику в include/uri-router.php
А для контента используйте свою отдельную таблицу страниц. Например создаем модель с request:
/request-dinamic-model-name
пример запроса к динамическим страницам
- my-categories - таблица в бд с вашими динамическими категориями
- my-pages - таблица в бд с вашим контентом динамических страниц
- url - поля в бд ваших категорий и страниц для формирования запросов
- /request-dinamic-model-name - ваша модель страницы (укажем только 1 уникальный request для неё и 1 обработчик)
- $data_page - данные вашей страницы, которые будут доступны в контексте её файла
- /any-category-url/any-page-url - запросы по которым будет доступна ваша динамическая модель
$rx = "#^/(" . implode('|', array_column(Wrong\Database\Controller::all('', 'id', 'my-categories'), 'url')) . ")/([^/]+)$#";
if (
($data_page = Wrong\Database\Controller::find($matches[2],
'url',
'my-pages')) && (
$arr = Wrong\Models\Pages::all(
'/request-dinamic-model-name',
'request'))
) {
return $user->access()->read($row);
});
goto routing_start;
}
if (file_exists(
$_SERVER[
'DOCUMENT_ROOT'] . $row->file)) {
if (
($template = Wrong\Models\Templates::find($row->template_id)) &&
$user->access()->read($template) &&
file_exists(
$_SERVER[
'DOCUMENT_ROOT'] . $template->file)
) {
require
$_SERVER[
'DOCUMENT_ROOT'] . $template->file;
goto routing_start;
}
}
}
}
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit
catch(\Throwable $th) $request
- Предупреждения
- Будет плохой практикой создавать отдельную модель Страница под каждую динамическую страницу вашего сайта! Используйте код выше.