问题描述
我正在尝试将 Laravel 5.7 项目转换为 8,仍在调试中,但我无法解决该特定问题。
当我运行该项目时,我收到“Call to undefined function 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 App\Models\Option;
use Illuminate\Support\Facades\Cache;
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"
],
并输入 composer dump-autoload
。成功了。
该解决方案之前没有奏效,我不得不在 composer.json 文件中删除并重写它。
还有一个错误,但至少我解决了这个问题。