0

我正在尝试在新的 Laravel 4 应用程序中设置 PSR-4,但是在构建控制器时遇到了一些麻烦。

这是我现在拥有的:

namespace MyApp\Controllers\Domain;

class DomainController extends \BaseController {

    public $layout = 'layouts.default';

    public function home() {
        $this->layout->content = \View::make('domain.home');
    }
}

我不太喜欢用\View, \Config,\Whatever来使用 Laravel 的类。所以我想知道我是否可以放 ause Illuminate\View;以便在不放 a 的View::make情况下使用\

不幸的是,在执行此操作时,我收到以下错误:Class 'Illuminate\View' not found

有人可以帮忙吗?

4

3 回答 3

1

假设 BaseController.php 的命名空间为 MyApp\Controllers\Domain

namespace MyApp\Controllers\Domain;

use View;

class DomainController extends BaseController {

    public $layout = 'layouts.default';

    public function home() {
        $this->layout->content = View::make('domain.home');
    }
}

如果 BaseController.php 有其他命名空间,即 MyApp\Controllers

namespace MyApp\Controllers\Domain;

use MyApp\Controllers\BaseController;
use View;

class DomainController extends BaseController {

    public $layout = 'layouts.default';

    public function home() {
        $this->layout->content = View::make('domain.home');
    }
}

例如,如果您的控制器需要使用 Laravel 中的另一个基类,可以说Config.

namespace MyApp\Controllers\Domain;

use MyApp\Controllers\BaseController;
use View;
use Config;

class DomainController extends BaseController {

    public $layout = 'layouts.default';

    public function home() {
        $this->layout->content = View::make('domain.home')->withName(Config::get('site.name'));
    }
}
于 2014-09-18T08:02:41.063 回答
1

您的问题View是不在Illuminate命名空间中,而是在Illuminate\View命名空间中,因此正确的导入不是:

use Illuminate\View; 

use Illuminate\View\View;

您可以查看http://laravel.com/api/4.2/以找出哪个命名空间适合您要使用的类

于 2014-09-18T08:17:11.043 回答
1

View::make() 的使用利用了 Laravel 的外观。为了正确引用外观,而不是直接引用从 iOC 容器中解析出来的类,我将使用以下内容:

use Illuminate\Support\Facades\View;

这将引用调用 View::make() 时正在使用的 View 外观

于 2015-01-05T20:35:49.030 回答