2016-02-04 6 views
3

Dans leur nouvelle documentation, il n'y a rien pour les messages flash.SlimPHP v3 comment afficher le message flash affiché

J'ai installé l'extension flash à partir de leur référentiel github (slimphp/Slim-Flash). Tout fonctionne bien, je peux ajouter des messages et peut également recevoir ces messages.

// Adding a message 
$this->flash->addMessage('test', 'This is a message'); 

// Getting a message 
$this->flash->getMessage('test')[0]; 

Mais cela ne fonctionne que dans les routes. Bien sûr, je veux avoir ces messages affichés sur ma vue.

Mais je ne sais tout simplement pas comment afficher ce message dans la vue des branches.

J'ai déjà essayé:

{{ container.flash.message('test')[0] }} 
{{ container.flash.getMessage('test')[0] }} 
{{ this.flash.message('test')[0] }} 
{{ this.flash.getMessage('test')[0] }} 
{{ flash.message('test')[0] }} 
{{ flash.getMessage('test')[0] }} 
{{ app.flash.message('test')[0] }} 
{{ app.flash.getMessage('test')[0] }} 
{{ container.flash.test }} 

Merci pour l'aide!

Répondre

1

Vous pouvez ajouter le message flash dans l'attribut de données à partir de la méthode render:

$this->view->render($res, 'path/to/template.twig', [ 
    'flash' => $this->flash 
]); 

Ou vous pouvez ajouter un middleware et ajoutez votre instance flash pour les paramètres de brindille

$app->add(function ($request, $response, $next) { 
    $this->view->offsetSet("flash", $this->flash); 
    return $next($request, $response); 
}); 

il devrait être possible d'accéder aux messages à l'intérieur du modèle de brindille avec

{{ flash.getMessage('test') }}

+0

Votre solution avec le middleware a bien fonctionné merci. Mais au lieu d'utiliser $ app -> ... vous devez utiliser $ this -> ... Après avoir changé cela, cela a bien fonctionné. – deflox

+0

@deflox ok, je l'ai édité. – jmattheis