Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flash message #11

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Available service providers:
* Flysystem
* PHPMailer
* Cache (redis for now)
* Flash Message
* [Jobby](https://github.com/jobbyphp/jobby)

Available middleware:
Expand Down
20 changes: 20 additions & 0 deletions app/Helpers/Dynamic.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php
/**
* Created by PhpStorm.
* User: jerfeson
* Date: 26/11/18
* Time: 21:47
*/

namespace App\Helpers;

class Dynamic extends \stdClass
{

public function __call($key, $params)
{
if (!isset($this->{$key})) throw new Exception("Call to undefined method " . get_class($this) . "::" . $key . "()");
$subject = $this->{$key};
call_user_func_array($subject, $params);
}
}
43 changes: 43 additions & 0 deletions app/Helpers/Flash.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
/**
* Created by PhpStorm.
* User: jerfeson
* Date: 26/11/18
* Time: 21:45
*/

namespace App\Helpers;

use Slim\Flash\Messages;

class Flash
{
const STATUS_SUCCESS = 1;
const STATUS_ERROR = 2;

/**
* @param Messages $messages
*
* @return Dynamic|string
*/
public static function getMessage(Messages $messages)
{
$message = "";

if ($messages->hasMessage(self::STATUS_SUCCESS)) {
$message = new Dynamic();

$message->class = 'alert-success';
$message->text = $messages->getFirstMessage(self::STATUS_SUCCESS);

} elseif ($messages->hasMessage(self::STATUS_ERROR)) {
$message = new Dynamic();

$message->class = 'alert-danger';
$message->text = $messages->getFirstMessage(self::STATUS_ERROR);

}

return $message;
}
}
20 changes: 12 additions & 8 deletions app/Http/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use \League\Plates\Engine as Plates;
use Slim\Flash\Messages;
use \Slim\Views\Twig;
use \Psr\Log\LoggerInterface;

Expand All @@ -13,19 +14,22 @@
public $response;
public $logger;
public $view;

/**
* @param \Psr\Http\Message\ServerRequestInterface $request
* @param \Psr\Http\Message\ResponseInterface $response
* @param \League\Plates\Engine $view
* @param \Psr\Log\LoggerInterface $logger
*/
public function __construct(Request $request, Response $response, Plates $view, LoggerInterface $logger)
public $message;

/**
* @param \Psr\Http\Message\ServerRequestInterface $request
* @param \Psr\Http\Message\ResponseInterface $response
* @param \League\Plates\Engine $view
* @param \Psr\Log\LoggerInterface $logger
* @param Messages $message
*/
public function __construct(Request $request, Response $response, Twig $view, LoggerInterface $logger, Messages $message)
{
$this->request = $request;
$this->response = $response;
$this->view = $view;
$this->logger = $logger;
$this->message = $message;
}

}
5 changes: 4 additions & 1 deletion app/Http/Site/Welcome.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

namespace App\Http\Site;
use App\Helpers\Flash;
use \App\Http\Controller;

class Welcome extends Controller
Expand All @@ -10,7 +11,9 @@ public function index()
{
// log some message
$this->logger->info("log a message");


$this->message->addMessage(Flash::STATUS_SUCCESS,"teste") ;

if ($this->view instanceof \Slim\Views\Twig) {
$this->view->render($this->response, "@site/test/welcome.twig");
}
Expand Down
24 changes: 24 additions & 0 deletions app/Middleware/Flash.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace App\Middleware;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Slim\Flash\Messages;
use Slim\Views\Twig;

class Flash
{

public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
{
/** @var Twig $view */
$view = app()->getContainer()[Twig::class];
// $plages = app()->getContainer()[Plates::class];
$message = app()->getContainer()[Messages::class];

$message = \App\Helpers\Flash::getMessage($message);
$view->getEnvironment()->addGlobal('message', $message);

return $next($request, $response);
}
}
19 changes: 19 additions & 0 deletions app/ServiceProviders/Flash.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace App\ServiceProviders;

use Slim\Flash\Messages;

class Flash implements ProviderInterface
{

public static function register()
{
app()->getContainer()[Messages::class] = function ($c) {
$flash = new \Slim\Flash\Messages;
return $flash;
};

}

}
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"illuminate/database": "5.6.*",
"phpmailer/phpmailer": "6.0.*",
"naroga/redis-cache": "1.1.*",
"slim/flash": "0.4.*"
"hellogerard/jobby": "^3.4"
},
"require-dev": {
Expand Down
3 changes: 3 additions & 0 deletions config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,14 @@
App\ServiceProviders\Eloquent::class => 'http,console',
App\ServiceProviders\FileSystem::class => 'http,console',
App\ServiceProviders\Mailer::class => 'http,console',
App\ServiceProviders\Cache::class => 'http,console',
App\ServiceProviders\Flash::class,
App\ServiceProviders\Jobby::class,
],
// add your middleware here
'middleware' => [
App\Middleware\Session::class => 'http',
App\Middleware\Flash::class,
],

];
1 change: 1 addition & 0 deletions resources/views/http/site/test/welcome.twig
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% extends "@site/layout/main.twig" %}

{% block content %}
<small>{{ message.class }} {{ message.text }}</small>
<br/><br/>Welcome to SLIM!
{% endblock %}