【发布时间】:2021-01-01 18:00:22
【问题描述】:
我在 ComposerServiceProvider 文件的 boot 方法中放置的“view()->share(...)”不起作用。但是当我把它放在 AppServiceProvider 中时它可以工作。我还在 app.php 文件的“providers”部分添加了 ComposerServiceProvider。
错误:
ErrorException
Undefined variable: test (View: /Users/devtools/Projects/sites/laravel/resources/views/components/backend/sidebar/menu-list.blade.php)
http://localhost/tr/admin/settings
可能是什么问题?感谢您的帮助。
它们是我的代码:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
// ...
public function boot()
{
// This code works when I put it in AppServiceProvider.php
view()->composer('*', function ($view) {
view()->share('test', 'deneme');
});
}
}
config/app.php:
// ...
'providers' => [
/*
* Application Service Providers...
*/
App\Providers\ComposerServiceProvider::class,
],
routers/web.php:
Route::prefix(LaravelLocalization::setLocale() . "/admin")
->name('admin.')
->middleware(['localeSessionRedirect', 'localizationRedirect', 'localize', 'auth', 'verified'])
->group(function ()
{
Route::get('/', function () {
return view('backend.home');
})->name('home');
});
composer.json
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2.5|^8.0",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^6.3.1|^7.0.1",
"laravel/framework": "^7.29",
"laravel/tinker": "^2.5",
"laravel/ui": "^2.4",
"mcamara/laravel-localization": "^1.6"
},
"require-dev": {
"almasaeed2010/adminlte": "~3.0",
"facade/ignition": "^2.0",
"fakerphp/faker": "^1.9.1",
"mockery/mockery": "^1.3.1",
"nunomaduro/collision": "^4.3",
"phpunit/phpunit": "^8.5.8|^9.3.3"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
如您所见,这些是文件名和路径
解决方案:
问题是我删除了“数据”文件夹 “存储/框架/缓存/”。当我运行“php artisan cache:clear” 命令,它给出了一个错误。我添加了文件夹,没关系。
【问题讨论】:
-
您是否缓存了您的配置?为此,您将使用视图共享而不是作曲家
-
嗨@lagbox!非常感谢您的回答。但是,问题是我删除了“storage/framework/cache/”中的“data”文件夹。当我运行“php artisan cache:clear”命令时,它给出了一个错误。我添加了文件夹,没关系。谢谢你。 :)