我试图在新的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的课程。所以我想知道是否可以use Illuminate\View;
使用View::make
而无需放\
。
不幸的是,在执行此操作时,我收到以下错误:Class 'Illuminate\View' not found
。
有人可以帮忙吗?
答案 0 :(得分: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'));
}
}
答案 1 :(得分:1)
您的问题是View
不位于Illuminate
命名空间中,而是位于Illuminate\View
命名空间中,因此正确导入不会:
use Illuminate\View;
但
use Illuminate\View\View;
您可以查看http://laravel.com/api/4.2/以找出您想要使用的类正确的命名空间
答案 2 :(得分:1)
View :: make()的使用利用了Laravel外墙。要正确引用外观,而不是直接引用从iOC容器中解析出来的类,我将使用以下内容:
use Illuminate\Support\Facades\View;
这将引用调用View :: make()
时使用的View外观