php - 如何在 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 传递给查看?
解决方案
AdComposer
从提供者数组中删除。
文档状态:
请记住,如果您创建一个新的服务提供者来包含您的视图编写器注册,您需要将服务提供者添加到 config/app.php 配置文件中的 providers 数组中。
它不会告诉您将作曲家添加到提供者数组中。
此外,如果您键入提示App\Ad
,您将得到一个空实例,以便您知道。
推荐阅读
- node.js - 通过 AJAX 作为 post 发送表单 - 这是更好的内容类型 multipart/form-data 或 application/json
- asp.net-core - 发布时缺少 ASP.net CORE 3.1 视图
- android - Qt Android 应用程序因“无法启动活动 GrantPermissionsActivity”而崩溃
- config - 如何在此绑定配置文件中为一个命令分配两个键?
- prometheus - Prometheus - 随着时间的推移获取唯一的标签值
- c++ - Boost Unit Test 在检查失败后将所有控制台文本永久变为红色
- mysql - MySQL id 未按顺序保存(生产中的 Laravel)
- html - Jekyll 网站无法使用“github-pages”Jekyll 插件正确地将 Markdown 和 Liquid 转换为 html
- sql - 删除会话记录中的时间重叠
- python - Python 中 Flask Web App 中的错误:pymysql.err.ProgrammingError: Cursor closed