我尝试使用Laravel 5.0创建应用,但我在 BaseController构造函数中使用Session方法时遇到问题
这是我的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'));
}
}
}
但我收到此错误
BaseController.php第22行中的ContextErrorException: 运行时注意:非静态方法Symfony \ Component \ HttpFoundation \ Session \ Session :: has()不应该静态调用,假设$ this来自不兼容的上下文
有谁知道我做错了什么?
答案 0 :(得分:8)
而不是:
use Symfony\Component\HttpFoundation\Session\Session;
你应该使用:
use Session;
在此处导入会话。
答案 1 :(得分:2)
您导入了错误的课程。 Symfony\Component\HttpFoundation\Session\Session
是Laravel在调用Session::
外观时使用的类 - 但它们不是同一个类,并且Symfony的会话类不使用has()
的静态方法。我自己没有使用过Laravel 5,但我认为它位于顶级命名空间中。