2014-11-25 4 views
1

Я пытаюсь создать приложение с Laravel 5.0 и у меня есть проблема с использованием методов Session в моем BaseController конструкторLaravel 5,0 Сессия не может использовать статические методы

Вот мой BaseController с его consturctor.

use Symfony\Component\HttpFoundation\Session\Session; 

class BaseController extends Controller { 

    /** 
    * Initializer. 
    * 
    * @access public 
    * @return \BaseController 
    */ 
    public function __construct() 
    { 

     //set default lang 
     if (!Session::has('lang')) { 
      Session::put('lang', App::getLocale()); 
      Cookie::forever('lang', App::getLocale()); 
     } else { 
      App::setLocale(Session::get('lang')); 
     } 


    } 
} 

, но я получаю эту ошибку

ContextErrorException в BaseController.php линии 22: времени выполнения Примечание: Non-статический метод Symfony \ Component \ HttpFoundation \ Session \ Session :: есть() не должен следует называть статически, предполагая $ это из несовместимого контекста

Кто-нибудь знает, что я делаю неправильно?

+0

Это звучит странно ... Кстати, если бы я был вами, я бы попытался обойти проблему, вызвав 'Session()' как новый объект. '$ session = new Session()', а затем '$ session-> имеет ('lang')'. Это не так «стиль Laravel», но должен работать. – phaberest

+0

Как вы видите, это объект Session Symfony2, и у него нет такого паршивого статического интерфейса. Используйте класс «фасад» Ларавеля, если хотите: http://laravel.com/docs/4.2/session –

ответ

7

Вместо:

use Symfony\Component\HttpFoundation\Session\Session; 

вы должны использовать:

use Session; 

импортировать сессию здесь.

+0

Спасибо, что была проблема :) – user13746

2

Вы импортируете неправильный класс. Symfony\Component\HttpFoundation\Session\Session - это класс, используемый Laravel, когда вы вызываете фасад Session::, но они не являются тем же классом, и класс сеансов Symfony не использует статический метод для has(). Я сам не использовал Laravel 5, но я думаю, что он находится в пространстве имен верхнего уровня.

+0

Ну, я не заметил, что он импортировал класс. Вот и мы, вот почему! – phaberest

Смежные вопросы