我有一个简单的设置,我需要在我的网站标题中的应用程序中普遍显示一些数据。为此,我创建了一个ComposerServiceProvider
类和一个HeaderComposer
类来委派此职责,如下所示:
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
public function register() {
$this->app->view->composer('templates.header', 'HeaderComposer');
}
}
class HeaderComposer {
public function compose($view) {
Event::listen('illuminate.query', function($q) {
print_r($q);
});
$view->with('nearbyMissions', array(
'past' => Mission::remember(60, 'previousMissions')->previousMissions(3)->get(),
'future' => Mission::remember(60, 'nextMissions')->nextMissions(3)->get()
));
}
}
以前,这些类没有命名空间,但我现在决定将每个类命名为一个好的做法,方法是在文件前加上:
namespace MyProject\Composers;
然而,由于我的项目的某些部分无法再解析我的作曲家类,这已经破坏了我的应用程序。我的所有页面都不起作用,因为它们都使用模板化的标题视图,该视图使用我的HeaderComposer
:
Class HeaderComposer does not exist (View: H:\myproject\app\views\templates\main.blade.php)
我想在哪里为我的班级宣布use
陈述?在我看来? (这似乎并不正确)。在其他地方?
答案 0 :(得分:1)
由于您只是为您的类命名,因此您必须更新您的作曲家绑定:
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
public function register() {
$this->app->view->composer('templates.header', 'MyProject\Composers\HeaderComposer');
}
}