Skip to content

Commit 22643d8

Browse files
committed
Implement session class and display registration success message
1 parent 215a453 commit 22643d8

File tree

4 files changed

+69
-0
lines changed

4 files changed

+69
-0
lines changed

controllers/SiteController.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
namespace app\controllers;
99

1010

11+
use app\core\Application;
1112
use app\core\Controller;
1213
use app\core\Request;
1314
use app\models\User;
@@ -39,6 +40,8 @@ public function register(Request $request)
3940
if ($request->getMethod() === 'post') {
4041
$registerModel->loadData($request->getBody());
4142
if ($registerModel->validate() && $registerModel->save()) {
43+
Application::$app->session->setFlash('success', 'Thanks for registering');
44+
Application::$app->response->redirect('/');
4245
return 'Show success page';
4346
}
4447

core/Application.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Application
2121
public Response $response;
2222
public Controller $controller;
2323
public Database $db;
24+
public Session $session;
2425

2526
public function __construct($rootDir, $config)
2627
{
@@ -30,6 +31,7 @@ public function __construct($rootDir, $config)
3031
$this->response = new Response();
3132
$this->router = new Router($this->request, $this->response);
3233
$this->db = new Database($config['db']);
34+
$this->session = new Session();
3335
}
3436

3537
public function run()

core/Session.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
/**
3+
* User: TheCodeholic
4+
* Date: 7/24/2020
5+
* Time: 11:18 PM
6+
*/
7+
8+
namespace app\core;
9+
10+
11+
/**
12+
* Class Session
13+
*
14+
* @author Zura Sekhniashvili <[email protected]>
15+
* @package app\core
16+
*/
17+
class Session
18+
{
19+
protected const FLASH_KEY = 'flash_messages';
20+
21+
public function __construct()
22+
{
23+
session_start();
24+
$flashMessages = $_SESSION[self::FLASH_KEY] ?? [];
25+
foreach ($flashMessages as $key => &$flashMessage) {
26+
$flashMessage['remove'] = true;
27+
}
28+
$_SESSION[self::FLASH_KEY] = $flashMessages;
29+
}
30+
31+
public function setFlash($key, $message)
32+
{
33+
$_SESSION[self::FLASH_KEY][$key] = [
34+
'remove' => false,
35+
'value' => $message
36+
];
37+
}
38+
39+
public function getFlash($key)
40+
{
41+
return $_SESSION[self::FLASH_KEY][$key]['value'] ?? false;
42+
}
43+
44+
public function __destruct()
45+
{
46+
$this->removeFlashMessages();
47+
}
48+
49+
private function removeFlashMessages()
50+
{
51+
$flashMessages = $_SESSION[self::FLASH_KEY] ?? [];
52+
foreach ($flashMessages as $key => $flashMessage) {
53+
if ($flashMessage['remove']) {
54+
unset($flashMessages[$key]);
55+
}
56+
}
57+
$_SESSION[self::FLASH_KEY] = $flashMessages;
58+
}
59+
}

views/layouts/main.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@
4343
</nav>
4444

4545
<div class="container">
46+
<?php if (\app\core\Application::$app->session->getFlash('success')): ?>
47+
<div class="alert alert-success">
48+
<p><?php echo \app\core\Application::$app->session->getFlash('success') ?></p>
49+
</div>
50+
<?php endif; ?>
4651
{{content}}
4752
</div>
4853

0 commit comments

Comments
 (0)