“Laravel”中php命名空间的问题

时间:2013-12-01 15:35:40

标签: php authentication web laravel

我在Controller'文件夹'中使用子文件夹,工作正常.. 但是当我写下打击代码..php返回错误时说“未找到Auth,输入'

<?php
namespace website;


use Auth;
use Input;
use View;
use Illuminate\Routing\Controllers\Controller;

class HomeController extends Controller {

    public function index()
    {
        return View::make('wcsite.index');
    }

    public function saveHome()
    {
        $uid = Auth::user()->id;
        $websiteData = Input::get('data');
        return $uid;
    }
}

但是当我添加'使用Auth,使用输入'时,一切正常......所以,任何能告诉我的人......有没有办法解决这个问题,“不需要使用Auth,请使用输入我的子文件夹控制器'非常感谢你!

我的路线是

Route::post('/wcsite',array('uses' => 'website\HomeController@saveHome'))->before('auth');

1 个答案:

答案 0 :(得分:2)

你的问题有点令人困惑。您说上面的代码无效,因为PHP无法找到Auth和Input全局类引用,但您的代码清楚地显示您正确地导入它们。

PHP不能使用全局Auth和Input类引用而不先导入它们(您在上面的代码中正在进行)。它会假设它们默认位于website命名空间下。

如果您不想使用use语句导入hem,则可以在类名之前使用反斜杠来引用全局命名空间,如下面的代码所示:

<?php
namespace website;

use Illuminate\Routing\Controllers\Controller;

class HomeController extends Controller {

    public function index()
    {
        return \View::make('wcsite.index');
    }

    public function saveHome()
    {
        $uid = \Auth::user()->id;
        $websiteData = \Input::get('data');

        return $uid;
    }
}

话虽这么说,我更喜欢先导入类,而不是在任何地方使用反斜杠。它将提供更清晰的代码。