定制服务提供商的未定义变量

时间:2017-01-30 13:32:51

标签: php laravel laravel-5.3 laravel-blade

我正在按照Laracast的教程将数据传递给partials。[注意:使用Laravel 5.3]我已完成视频中的每一步,但我在部分(_nav)中得到未定义的变量错误我确实经历了视频中的所有评论,其中一些也有同样的问题,但没有任何解决方案。不知道出了什么问题。这是因为我正在使用Laravel 5.3而且教程是在Laravel 5上制作的

以下是我的代码: 在config/app.php

中添加了自定义服务提供商
App\Providers\ViewComposerServiceProvider::class,

自定义服务提供商`ViewComposerServiceProvider.php

<?php
namespace App\Providers
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->composeNavigation();
    }
    public function register()
    {
    //
    }

    private function composeNavigation(){
        view()->composer('partials._nav','App\Http\Composers\NavigationComposer');
    }
}

NavigationComposer.php

<?php
namespace App\Http\Composers;
use Illuminate\Contracts\View\View;
use App\Tour;
class NavigationComposer{

public function compose( View $view)
   {
       $view->with('latest',Tour::latest()->first());
   }
}

部分代码(partials._nav

<li><a href="#">{{$latest->title}}</a></li>

1 个答案:

答案 0 :(得分:1)

如您所知,教程视频是在Larave 5上制作的,而您是在5.3中完成的。并且在视频中提及或说实践的方法在laravel 5.3中不起作用[不完整]。你是正确的创建自定义服务提供程序和类来处理查询请求。

ViewComposerServiceProvider.php移除composeNavigation()指南中,在boot()方法中添加以下内容

      View::composer(
        'partials/_nav', 'App\Http\Composers\NavigationComposer'
    );

其他代码似乎都很好。这是官方的documentation