首页 > 解决方案 > 如何在 laravel 中解决问题视图作曲家

问题描述

配置/app.php

'providers' => [
     // ...
     App\Providers\ViewServiceProvider::class,
     App\Http\View\Composers\AdComposer::class,
],

app/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'
        );
    }
}

app/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 传递给查看?

标签: phplaravellaravel-bladeservice-provider

解决方案


AdComposer从提供者数组中删除。

文档状态:

请记住,如果您创建一个新的服务提供者来包含您的视图编写器注册,您需要将服务提供者添加到 config/app.php 配置文件中的 providers 数组中。

它不会告诉您将作曲家添加到提供者数组中。

此外,如果您键入提示App\Ad,您将得到一个空实例,以便您知道。


推荐阅读