config / 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);
}
}
我的问题是:
TypeError参数1传递给 App \ Http \ View \ Composers \ AdComposer :: __ construct()必须是实例 App \ Ad的实例,给定的Illuminate \ Foundation \ Application实例,称为 在 E:\ appoo \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ ProviderRepository.php 在第208行
如何解决此问题并传递$ ads进行查看?
答案 0 :(得分:1)
从providers数组中删除AdComposer
。
文档状态:
请记住,如果您创建一个新的服务提供商以包含您的View Composer注册,则需要将服务提供商添加到config / app.php配置文件中的providers数组中。
它不会告诉您将作曲家添加到providers数组中。
此外,如果您提示输入App\Ad
,您将得到一个空实例,这是为了使您知道。