web-dev-qa-db-fra.com

Laravel 4 comment afficher un message flash en vue?

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
23
Morne Zeelie

Ça marche pour moi

@if(Session::has('success'))
    <div class="alert-box success">
        <h2>{{ Session::get('success') }}</h2>
    </div>
@endif
56
Andreyco

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
6
Muthu

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 ().

4
Milleus88

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

4
Trying Tobemyself
{{ 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.

3
brainless

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

2
foxfarrier

Ce lien décrit comment faire cela http://vegibit.com/flash-messages-in-laravel/

Juste essayé avec laravel 5 - fonctionne pour moi.

0
funguy

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é').

0
Big Tree

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
0

À 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
0
Abdul Rehman Ch