2015-03-24 22 views
7

php kaydedilebiliyor Nesneler, nesne koleksiyonları laravelde 5 Oturum?Bir Laravel 5 Oturumunda Nesneleri, Nesne Koleksiyonlarını kaydedebilir miyim?

Deniyordum ama her zaman Depolamaya çalıştığınız nesnenin JSON gösterimi depolayabilir bu

Serialization of 'Closure' is not allowed vendor/illuminate/session/Store.php line 255 

Session::put('my_php_object', $obj); 
Session::save(); 


public function onRun() 
{ 

    $this->addCss('assets/css/custom.css'); 
    $this->socialite_providers = $this->page['socialite_providers'] =$this->providersList(); 

    //check for provider param in url 
    if($provider = $this->param('provider')){ 

     $this->setSessionProvider($provider); 
     $this->provider = $provider; 
     $this->callback_url = preg_replace('~.*\K:(.*)~s','',Request::root().$this->page->url); 
     $this->request = $this->createRequest($provider); 


     Session::save(); 
     return $this->request->redirect(); 

    } 

    //Authorize user if Request has code 
    if(Request::has('code')){ 

     if(!$this->getSession()) 
      return; 

     //reuse save session 

    } 

} 

public function createRequest($provider) 
{ 
    $instance = Socialite::driver($provider); 
    $init = $this->injectCredentials($instance, $provider); 

    $this->setSession($init); 
    return $init; 
} 

public function injectCredentials($instance, $provider){ 
    $credential = $this->providerData($provider)->toArray(); 
    $instance = new $instance 
    (
     Request::instance(), 
     $credential['client_id'], 
     $credential['client_secret'], 
     $this->callback_url 
    ); 

    return $instance; 
} 

public function setSession($init) 
{ 
    if(Session::has('socialite_object')) 
     Session::forget('socialite_object'); 


    Session::put('socialite_object', $init); 

} 
+0

Seri hale getirmeyi denediniz mi ($ obj)? Muhtemelen işe yaramaz ama yine de. –

+0

Çalışmaya çalışıyorum, Serialize Closure hatası aldığımdan çalışmaya devam edeceğim – fefe

+3

Laravel'deki nesneleri ve koleksiyonları sorunsuz bir şekilde oturuma kaydettim. Şüphelenirim, belki de bir yere '$ this' kullanıyorsunuz ve aslında niyetiniz olmayan bir şey alıyorsunuz. –

cevap

1

üzerinde hata alıyorum. Bununla birlikte, oturumda büyük şeyleri saklamamanın genellikle iyi bir fikir olduğunu duydum, başka bir şeyleri saklayarak yönetebildiğiniz var mıdır? DB'den bir nesne saklıyorsanız, Kimliği saklayabilir ve nesneyi bir sorgu ile kurtarabilirsiniz.

+0

Veritabanını birkaç kez (her sayfa yenileme için) bir oturumda sonuçları (daha az% değişecek şekilde) depolamaktan daha iyi sorgulamak daha iyi midir? – JCarlos