3

我正在尝试使用 Laravel 5.0 创建应用程序,但在BaseController 构造函数中使用 Session 方法时遇到问题

这是我的 BaseController 和它的构造函数。

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 来自不兼容的上下文

有谁知道我做错了什么?

4

2 回答 2

15

代替:

use Symfony\Component\HttpFoundation\Session\Session;

你应该使用:

use Session;

在此处导入 Session。

于 2014-11-25T12:56:18.343 回答
2

您正在导入错误的类。Symfony\Component\HttpFoundation\Session\Session是 Laravel 在调用Session::外观时使用的类 - 但它们不是同一个类,并且 Symfony 的会话类不使用静态方法来处理has(). 我自己没有使用过 Laravel 5,但我认为它在顶级命名空间中。

于 2014-11-25T12:48:55.033 回答