2014-09-18 1 views
0

Prendre la classe suivante:validation passage en tant que données flash de session Laravel: sérialisation de fermeture n'est pas autorisé

class SessionHelper 
{ 
    public static function GetViewModel() 
    { 
     return unserialize(Session::get('viewModel')); 
    } 

    public static function StoreViewModel($object) 
    { 
     return Session::flash('viewModel', serialize($object)); 
    } 
} 

Imaginez que j'ai une méthode de commande d'enregistrement avec ceci dans:

public function PostRegister() 
{ 
    $validator = Validator::make(
     $values, 
     $rules, 
     $messages 
    ); 

    if($validation->fails()) 
    { 
     $viewModel->User->Password = NULL; 
     $viewModel->Validation = $validation->messages();     
     SessionHelper::StoreViewModel($viewModel); 

     return Redirect::action("[email protected]"); 
    } 
} 

Il donne l'erreur suivante:

 Serialization of 'Closure' is not allowed 

     Open: C:\xampp\htdocs\...\app\models\Helpers\SessionHelper.php 

5. public static function GetViewModel() 
6. { 
7.  return unserialize(Session::get('viewModel')); 
8. } 
9.  
10. public static function StoreViewModel($object) 
11. { 
12.  return Session::flash('viewModel', serialize($object)); 
13. } 
14.} 

Je souhaite être en mesure de transmettre l'objet de validation dans une autre méthode de contrôleur utilisant les fonctions d'action Redirect :: ... Des idées comment je fais ça?

public function GetRegister() 
{ 
    if(!$viewModel = SessionHelper::GetViewModel()) 
    { 
     $viewModel = new RegisterViewModel(); 
    }   

    return View::make("Authentication/Register", ModelHelper::Prepare($viewModel)); 
} 

Répondre

1

Vous aurez probablement à sérialiser que le tableau de messages:

$viewModel->Validation = $validation->messages()->all(); 
+0

Et puis les withErrors est ne va pas travailler est-il ... D'accord, je viens juste avec re -déclarer des bits de code pour l'instant – Jimmyt1988

Questions connexes