diff --git a/app/controllers/BlogController.php b/app/controllers/BlogController.php index 0402845..a59e650 100644 --- a/app/controllers/BlogController.php +++ b/app/controllers/BlogController.php @@ -9,29 +9,23 @@ class BlogController extends PageController { public function indexAction(): void { $archived = $this->router->request()->param('archived', 0); - $query = $this->router->request()->param('search', ''); - $posts = $this->search($query, $archived); + $search = $this->router->request()->param('search', ''); + $posts = $this->search($search, $archived); $this->defineHelpers(); - $this->router->service()->search = $query; + // AJAX search request will only render the posts partial + if ($_SERVER['REQUEST_METHOD'] == 'POST') { + $this->router->service()->partial($this->views . '/partials/blog-posts.php', ['posts' => $posts]); + return; + } + $this->router->service()->posts = $posts; + $this->router->service()->search = $search; $this->router->service()->injectView = $this->views . '/partials/blog-posts.php'; parent::view('blog', 'Hello'); } - public function searchAction(): void - { - $archived = $this->router->request()->param('archived', 0); - $query = $this->router->request()->param('query', ''); - $posts = $this->search($query, $archived); - - $this->defineHelpers(); - - $this->router->service()->posts = $posts; - $this->router->service()->partial($this->views . '/partials/blog-posts.php', $posts); - } - //-------------------------------------// private function search(string $query = '', int $archived = 0): ?array diff --git a/public/js/site.js b/public/js/site.js index 6f5a13b..83a3390 100644 --- a/public/js/site.js +++ b/public/js/site.js @@ -37,7 +37,13 @@ $(document).ready(function() { var url = $(this).data("url"); var search = $(this).val(); if (search.length == 0 || search.length >= 3) { - fetch(url + '/search?query=' + encodeURIComponent(search)) + fetch(url, { + method: 'POST', + body: 'search=' + encodeURIComponent(search), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + } + }) .then(response => response.text()) .then(data => { $("#blog-posts").empty().append(data); diff --git a/route.php b/route.php index 8061f6c..6efd504 100644 --- a/route.php +++ b/route.php @@ -18,7 +18,6 @@ return [ ['/robots.txt', 'IndexController', 'robots'], ['/sitemap.xml', 'IndexController', 'sitemap'], ['/blog', 'BlogController'], - ['/blog/search', 'BlogController', 'search'], ['/login', 'LoginController', 'login', ['', 'Sign in', '']], ['/reset-password', 'LoginController', 'reset', ['', 'Reset password', '']], ['/logout', 'LoginController', 'logout'],