如何解决 Laravel 中的视图作曲家问题

配置/应用程序.php


'providers' => [

     // ...

     App\Providers\ViewServiceProvider::class,

     App\Http\View\Composers\AdComposer::class,

],

应用程序/Providers/ViewServiceProvider.php


<?php


namespace App\Providers;


use Illuminate\Support\Facades\View;

use Illuminate\Support\ServiceProvider;


class ViewServiceProvider extends ServiceProvider

{


    public function register()

    {

        //

    }


    public function boot()

    {

        View::composer(

            'layouts.sidebar', 'App\Http\View\Composers\AdComposer'

        );

    }

}

应用程序/Http/View/Composers/AdComposer.php


<?php


namespace App\Http\View\Composers;


use App\Ad;

use Illuminate\View\View;

use Illuminate\Support\Facades\Request;


class AdComposer

{


    protected $ads;


    public function __construct(Ad $ads)

    {

        $this->ads = $ads;

    }


    public function compose(View $view)

    {

        $view->with('ads', $this->ads);

    }

}

我的问题是:


传递给 App\Http\View\Composers\AdComposer::__construct() 的 TypeError 参数 1 必须是 App\Ad 的实例,给出的 Illuminate\Foundation\Application 的实例,在 E:\appoo\vendor\laravel\framework\ 中调用src\Illuminate\Foundation\ProviderRepository.php 第 208 行


如何解决这个问题并传递 $ads 来查看?


杨魅力
浏览 96回答 1
1回答

繁星淼淼

从提供者数组中删除AdComposer。文档指出:请记住,如果您创建一个新的服务提供程序来包含视图编辑器注册,则需要将该服务提供程序添加到 config/app.php 配置文件中的提供程序数组中。它不会告诉您将作曲家添加到提供者数组中。另外,如果您输入提示,App\Ad您将得到一个空实例,以便您了解。
打开App,查看更多内容
随时随地看视频慕课网APP