我正在尝试在一个新的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。
谁能帮个忙吗?
发布于 2014-09-18 08:17:11
在您的例子中,问题在于View不是位于Illuminate命名空间中,而是位于Illuminate\View命名空间中,因此正确的导入不会:
use Illuminate\View; 但
use Illuminate\View\View;您可以查看http://laravel.com/api/4.2/,以找出要使用的类的名称空间是否正确。
发布于 2014-09-18 08:02:41
假设BaseController.php具有MyApp\Controller\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\控制器
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'));
}
}发布于 2015-01-05 20:35:49
View::make()的使用利用了Laravel正面。要正确引用facade,而不是直接引用从iOC容器中解析出来的类,我将使用以下方法:
use Illuminate\Support\Facades\View;这将引用在调用View::make()时使用的View facade
https://stackoverflow.com/questions/25906914
复制相似问题