J'essaie d'afficher mon message flash.
C'est dans mon fichier de routage
Route::post('users/groups/save', function(){
return Redirect::to('users/groups')->withInput()->with('success', 'Group Created Successfully.');
});
C'est à mon avis
{{ $success = Session::get('success') }}
@if($success)
<div class="alert-box success">
<h2>{{ $success }}</h2>
</div>
@endif
Mais rien ne fonctionne.
Lorsque j'essaie, j'obtiens une erreur. La variable $ success n'est pas définie. Mais il affiche également le message flash.
{{ Session::get('success') }}
@if($success)
<div class="alert-box success">
<h2>{{ $success }}</h2>
</div>
@endif
Ça marche pour moi
@if(Session::has('success'))
<div class="alert-box success">
<h2>{{ Session::get('success') }}</h2>
</div>
@endif
si vous utilisez bootstrap-3 essayez le script ci-dessous pour le style d'alerte
@if(Session::has('success'))
<div class="alert alert-success">
<h2>{{ Session::get('success') }}</h2>
</div>
@endif
deux méthodes:
Méthode 1 - si vous utilisez
return Redirect::to('users/groups')->withInput()->with('success', 'Group Created Successfully.');
sous votre contrôleur create (), ajoutez dans
$success = Session::get('success');
return View::make('viewfile')->with('success', $success);
puis sur la page de vue,
@if (isset($success))
{{$success }}
@endif
Ce qui se passe dans la méthode 1, c'est que vous créez une variable $ success qui est passée dans votre create (), mais elle n'a aucun moyen d'afficher $ success isset échouera toujours sauf si vous définissez une variable pour obtenir le message et le renvoyer.
Méthode 2 - Utiliser return Redirect withFlashMessage
return Redirect::route('users/groups')->withFlashMessage('Group Created Successfully.');
puis sur votre page de vue,
@if (Session::has('flash_message'))
{{ Session::get('flash_message') }}
@endif
La méthode 2 est beaucoup plus propre et ne nécessite pas de code supplémentaire sous create ().
lorsque vous définissez une variable ou un message à l'aide de ->with()
, il ne définit pas la variable/le message dans la session. Il crée plutôt une variable disponible dans votre vue. Dans votre cas, utilisez simplement $success
au lieu de Session::get('success')
.
Et si vous souhaitez définir le message dans la session, utilisez la Session::flash('key', 'value');
mais rappelez-vous qu’avec la session, les données ne sont disponibles que pour la demande suivante.
Sinon, vous pouvez utiliser Session::put('key', 'value');
pour stocker en session
pour plus d'informations lire ici
{{ Session::get('success') }}
Cela fait juste écho à la variable de session 'succès'. Alors quand tu utilises
{{ Session::get('success') }}
@if($success)
<div class="alert-box success">
<h2>{{ $success }}</h2>
</div>
@endif
vous voyez sa sortie avec l'erreur de la déclaration suivante. Parce que with (), la fonction ne définit que la valeur dans Session et ne sera pas définie en tant que variable. Par conséquent, @if($success)
entraînera une erreur de variable non définie.
Comme @Andreyco a dit:
@if(Session::has('success'))
<div class="alert-box success">
<h2>{{ Session::get('success') }}</h2>
</div>
@endif
Cela devrait marcher.
La raison pour laquelle vous ne le voyez pas peut-être parce que l'action que vous effectuez n'est pas un succès. Et cela ne vous oblige pas à réinstaller xampp ni à modifier php.ini.
Laravel 4.2 Personnellement, j'utilise
Session::flash('key', 'value');
return Redirect::to('some/url');
puis dans la vue id d'abord vérifier s'il y a une session de cette clé dans la vue
@if(Session::has('key'))
{{Session::get('key')}} //this prints out the message or your 'value' in the session::flash method
@endif
cela fonctionne pour moi la plupart du temps et j'ai généralement ce modèle de lame intégré dans ma vue afin que je puisse transmettre les messages de réussite à la vue à partir de mes codes.
veuillez noter qu'il est indiqué dans la documentation que "Parfois, vous souhaiterez peut-être stocker des éléments dans la session uniquement pour la requête suivante. Vous pouvez le faire à l'aide de la méthode Session :: flash".
j'espère que cela t'aides
Ce lien décrit comment faire cela http://vegibit.com/flash-messages-in-laravel/
Juste essayé avec laravel 5 - fonctionne pour moi.
je viens de me rendre compte en utilisant le Redirect :: to (), lorsque vous utilisez la méthode withInput (), enchaîner une fonction with () pour transmettre des variables ne fonctionnera pas. le seul moyen est soit de faire clignoter vos entrées séparément à l'aide de Input :: flash (), et d'utiliser le paramètre with () pour transmettre vos variables, soit via une session en utilisant Session :: flash ('clé', 'val') récupère dans la vue via session :: get ('clé').
cela devrait fonctionner chez localhost et sur host et je l'ai essayé.
<?php $success = Session::get('success'); ?>
@if($success)
<div class="alert-box success">
<h2>{{ $success }}</h2>
</div>
@endif
À l’intérieur du fichier routes.php, essayez de créer vos itinéraires dans le
Route::group(['middleware' => ['web']], function () {
//routes here
}
puis utiliser
@if(Session::has('success'))
<div class="alert-box success">
<h2>{{ Session::get('success') }}</h2>
</div>
@endif