Принимая следующий класс:
class SessionHelper
{
public static function GetViewModel()
{
return unserialize( Session::get( 'viewModel' ) );
}
public static function StoreViewModel( $object )
{
return Session::flash( 'viewModel', serialize( $object ) );
}
}
Представьте, что у меня есть метод контроллера регистрации с этим в:
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( "AuthenticationController@GetRegister" );
}
}
Это дает следующую ошибку:
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.}
Я хочу иметь возможность передать объект проверки в другой метод контроллера, используя функции Redirect :: action … Есть идеи, как мне это сделать?
public function GetRegister()
{
if( !$viewModel = SessionHelper::GetViewModel() )
{
$viewModel = new RegisterViewModel();
}
return View::make( "Authentication/Register", ModelHelper::Prepare( $viewModel ) );
}
Вам, вероятно, придется сериализовать только массив сообщений:
$viewModel->Validation = $validation->messages()->all();
Других решений пока нет …