Skip to content

Commit ecb7a04

Browse files
authored
Merge pull request #42 from odan/patch-1
Add Slim 4 usage example #40
2 parents 3fa6e61 + 54c54ad commit ecb7a04

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,89 @@ Requires Slim 3.0.0 or newer.
1616

1717
## Usage
1818

19+
### Slim 4
20+
21+
This example assumes that you have `php-di/php-di` installed.
22+
23+
```php
24+
<?php
25+
26+
use DI\ContainerBuilder;
27+
use Slim\Factory\AppFactory;
28+
use Slim\Flash\Messages;
29+
use Slim\Routing\RouteContext;
30+
31+
require_once __DIR__ . '/../vendor/autoload.php';
32+
33+
$containerBuilder = new ContainerBuilder();
34+
35+
// Add container definition for the flash component
36+
$containerBuilder->addDefinitions(
37+
[
38+
'flash' => function () {
39+
$storage = [];
40+
return new Messages($storage);
41+
}
42+
]
43+
);
44+
45+
AppFactory::setContainer($containerBuilder->build());
46+
47+
$app = AppFactory::create();
48+
49+
// Add session start middleware
50+
$app->add(
51+
function ($request, $next) {
52+
// Start PHP session
53+
if (session_status() !== PHP_SESSION_ACTIVE) {
54+
session_start();
55+
}
56+
57+
// Change flash message storage
58+
$this->get('flash')->__construct($_SESSION);
59+
60+
return $next->handle($request);
61+
}
62+
);
63+
64+
$app->addErrorMiddleware(true, true, true);
65+
66+
// Add routes
67+
$app->get(
68+
'/',
69+
function ($request, $response) {
70+
// Set flash message for next request
71+
$this->get('flash')->addMessage('Test', 'This is a message');
72+
73+
// Redirect
74+
$url = RouteContext::fromRequest($request)->getRouteParser()->urlFor('bar');
75+
76+
return $response->withStatus(302)->withHeader('Location', $url);
77+
}
78+
);
79+
80+
$app->get(
81+
'/bar',
82+
function ($request, $response) {
83+
$flash = $this->get('flash');
84+
85+
// Get flash messages from previous request
86+
$messages = $flash->getMessages();
87+
print_r($messages);
88+
89+
// Get the first message from a specific key
90+
$test = $flash->getFirstMessage('Test');
91+
print_r($test);
92+
93+
return $response;
94+
}
95+
)->setName('bar');
96+
97+
$app->run();
98+
```
99+
100+
### Slim 3
101+
19102
```php
20103
// Start PHP session
21104
session_start();

0 commit comments

Comments
 (0)