首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel,名称空间和PSR-4

Laravel,名称空间和PSR-4
EN

Stack Overflow用户
提问于 2014-09-18 07:40:45
回答 3查看 579关注 0票数 0

我正在尝试在一个新的Laravel 4应用程序中设置PSR-4,但当涉及到构建控制器时,我遇到了一些困难。

我现在拥有的是:

代码语言:javascript
复制
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的类。因此,我想知道是否可以在不放置use Illuminate\View;的情况下使用View::make

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

谁能帮个忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-18 08:17:11

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

代码语言:javascript
复制
use Illuminate\View; 

代码语言:javascript
复制
use Illuminate\View\View;

您可以查看http://laravel.com/api/4.2/,以找出要使用的类的名称空间是否正确。

票数 1
EN

Stack Overflow用户

发布于 2014-09-18 08:02:41

假设BaseController.php具有MyApp\Controller\Domain的命名空间

代码语言:javascript
复制
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\控制器

代码语言:javascript
复制
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

代码语言:javascript
复制
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'));
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-01-05 20:35:49

View::make()的使用利用了Laravel正面。要正确引用facade,而不是直接引用从iOC容器中解析出来的类,我将使用以下方法:

代码语言:javascript
复制
use Illuminate\Support\Facades\View;

这将引用在调用View::make()时使用的View facade

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25906914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档