В целях практики пишу админку якобы для сайта, на главной странице выводятся все посты, там же через ajax их можно изменить, удалить. Там же есть иконка с ссылкой на страницу юзеров, при её нажатии заменяется контент с постами и подгружаются юзеры, все работает нормально, но когда через обычный запрос открываю ссылку типа домен/panel/users,
то у меня открывается голая страница с данными, и это естественно, так как layout главной странице не подгружен. Если в шаблоне с юзерами подключить layout, то у меня подгружается вся страница целиком и вставляется в div с постами.
Использую Slim + Twig
часть роутов, в контроллере получаю данные из БД, и рендерится шаблон через twig
$app->get('/panel', 'App\Controllers\AdminController:all_post');
$app->get('/panel/users', 'App\Controllers\UsersController:users');
Layout шаблон twig
<!DOCTYPE html>
<html lang="ru">
<head>
// подключение скриптов, css файлов
</head>
<body>
<header>
// ссылка на users
<a id="btn_users" href="{{ baseUrl }}/panel/users"><i class="fas fa-user-circle fa-2x"></i></a>
</header>
<main class="transit">
{% block content %}
{% endblock %}
</main>
<script src="{{ baseUrl }}/public/js/functions.js"></script>
<script src="{{ baseUrl }}/public/js/users/users.js"></script>
</body>
</html>
шаблон Users
<div class="wrapper">
{%for user in users%}
// вывод данных юзеров
{%endfor%}
</div>
Контроллер Users
class UsersController extends Controller
{
public function users(Request $request, Response $response)
{
$stmt = $this->pdo->query("SELECT * FROM `users` ORDER BY `users`.`id` DESC");
$users = $stmt->fetchAll(\PDO::FETCH_ASSOC);
return $this->view->render($response, 'admins/users/users.twig', [
'users' => $users
]);
}
}
Ajax запрос к UsersController
$(document).ready(function () {
$('#btn_users').on('click', function (e) {
e.preventDefault();
let href = $(this).attr('href')
history.pushState('', '', href);
$.ajax({
url: location.origin+"/panel/users",
type: "GET",
dataType: 'html',
cache: false,
success: function (data) {
$('.wrapper').replaceWith(data)
}
})
});
});
Подскажите пожалуйста как это можно исправить, или что почитать, посмотреть, что бы разобраться в таких вопросах.