我正在尝试将Laravel 5.7项目转换为8,仍在调试,但我无法解决这个特殊的问题。
当我运行该项目时;调用未定义的函数App\Http\Controllers\get_option(("错误
我试过了:
- 将helpers.php位置提供程序更改为控制器
- 删除helpers.php文件中的if子句
- 添加";使用App\Providers\helpers"在主页控制器中
- 查看Laravel 8升级指南(https://laravel.com/docs/8.x/upgrade)
这是App\Http\Controllers\MainpageController:中的错误源
...
$products_recommendations = Product::select('product.*')
->join('product_details', 'product_details.product_id', 'product.id')
->where('product_details.show_recommendations', 1)
->orderBy('update_date', 'desc')
->take(get_option('mainpage_list_product_count'))->get();
...
这是app/Providers/helpers.php文件,它有get_option((函数:
<?php
use AppModelsOption;
use IlluminateSupportFacadesCache;
if (! function_exists('get_option')) {
function get_option($key) {
//$allOptions = Cache::rememberForever('allOptions', function() {
$minute = 60;
$allOptions = Cache::remember('allOptions', $minute, function() {
return Option::all();
});
return $allOptions->where('key', $key)->first()->variable;
}
}
我该怎么解决?
注意:我把变量和函数的名称翻译成英文是为了在这里提问。
我再次将助手添加到我的composer.json文件中:
"autoload": {
"files": [
"app/helpers.php"
],
并输入CCD_ 1。它奏效了。
这个解决方案以前不起作用,我不得不在composer.json文件中删除并重写它。
还有另一个错误,但至少我解决了这个问题。