2017-01-17 3 views
2

jour après quelques recherches
Après quelques recherches, je conclus que, mes sessions ne sont pas maintenues jusqu'à ce que je les sauve explicitement, ci-dessous le code fonctionne bien, mais pourquoi? ???Ref hereLaravel messages flash ou session ne se termine [non maintenue Mise à jour]

Session::put('lets_test', 2); 
Session::save(); 

Old Question
Je suis nouveau Laravel 5.3, et bloqué à un problème. Mes Laravel session ou messages ne sont pas expireront ils affichent chaque page de temps est rechargée, jusqu'à ce que je l'utilise Session::flush() Voici mon code de contrôleur

<?php 

namespace App\Http\Controllers; 


use Session; 
use Auth; 
use Illuminate\Http\Request; 
use App\User; 
use App\Hospital; 
use App\Wpr; 
use Helper; 

class OperatorController extends Controller 
{ 
    public $user_detail; 

    public function __construct() 
    { 
     $this->middleware('auth'); 
     $this->middleware('operator'); 
    } 
    public function store (Request $request){ //Form is being submitted here 
     //My logic here 
     Session::flash('user_message', 'Thank You'); 
     return redirect('/operator/wpr'); 
    } 
} 

J'ai aussi utilisé Session::set('user_message', 4); et vue sur la lame

@if(Session::has('user_message')) 
    <div class="message animated tada"> 
     {{ Session::get('user_message') }} 
    </div> 
@endif 

J'ai essayé avec Session::forget('user_message') mais pas de chance. Mise à jour de mon message après quelques recherches. Je suis un peu proche de mon problème par reading this post on stack parce que cette question est exactement identique à mon problème mais malheureusement, elle persiste, j'ai changé mon stockage de session du fichier à la base de données (dans le cas des autorisations de fichiers dans le répertoire de stockage). Quelles pourraient être d'autres possibilités?

S'il vous plaît aider, merci d'avance.

+1

Pouvez-vous montrer le code de votre contrôleur? Donc, en gros, la session flash sera supprimée une fois redirigée vers une nouvelle URL ou une page. Comme vous rechargez la même page, le contrôleur définit à nouveau la session et s'affiche. –

+0

Code de mise à jour –

Répondre

0

Finalement, en quelque sorte, j'ai réussi à trouver une solution à mon problème, de ne pas soutenir les sessions. Je ne pense pas que ce soit un problème lié à l'autorisation de fichier. Maintenant, je sauvegarde ma session explicitement et je l'enlève explicitement. a fait une classe d'aide a ajouté deux méthodes

public static function SetMessage($message, $type){ 
    Session::put('user_message', $message); 
    Session::put('user_message_type', $type); 
    Session::save(); 
} 
public static function ForgetMessage(){ 
    Session::forget('user_message'); 
    Session::forget('user_message_type'); 
    Session::save(); 
} 

et dans la classe contrôleur

Helper::SetMessage('Record updated successfully', 'success'); 

et à la vue lame tempalte

@if(Session::has('user_message')) 
    <div class="alert alert-{{ Session::get('user_message_type') }}"> 
    {{ Session::get('user_message') }} 
    {{ Helper::ForgetMessage('user_message') }} 
    </div> 
@endif 

J'espère que cela pourrait aider quelqu'un qui est confronté à un tel problème genre . Mais pourquoi est-il si, encore inconnu, peut-être un jour, je posterai la raison aussi. Plus de suggestions sont les bienvenues, si cela pourrait être fait d'une meilleure manière.

0

essayez ceci:

if(isset($_SESSION['user_message'])) { 
     $message = $_SESSION['user_message']; 
     unset($_SESSION['user_message']); 
     return $message; 
    } 
+0

Cet extrait peut être bon avec vanilla, mais pas avec laravel. J'ai mis à jour ma question. –

0

Dans votre lame ajouter $request->session()->forget('key'); ou Session::forget('key'); (Laravel) à la fin de la boucle si cela va finir ou supprimer la session de cette clé. Cela peut vous aider pour plus de référence sur la session de laravel 5.3 visitez laravel 5.3