【问题标题】:Error Call to undefined function App\Http\Controllers\Admin\get_option()错误调用未定义函数 App\Http\Controllers\Admin\get_option()
【发布时间】:2020-06-09 08:32:53
【问题描述】:

你好,我将 laravel 5.4 更新到 5.7 到 5.8 到 6 并精细到 7.14,我看到 get_option 错误

public function user()
{
    $userCount = User::where('admin','0')->count();
    $adminCount = User::where('admin','1')->count();
    $buyerCount = Sell::distinct('buyer_id')->count('buyer_id');
    $sellerCount = Sell::distinct('user_id')->count('user_id');
    $dayRegister = User::where('create_at','>',strtotime('-'.get_option('chart_day_count',10).' day')+12600)->get();
    return view('admin.report.user',['userCount'=>$userCount,'adminCount'=>$adminCount,'buyerCount'=>$buyerCount,'sellerCount'=>$sellerCount,'dayRegister'=>$dayRegister]);
}

在 laravel 5.4 中我定义在辅助方法中

function get_option($option,$default = null){
    if($result = \App\Models\Option::where('option',$option)->value('value'))
        return $result;
    else
        return $default;
}

但在 laravel 7 中不起作用!

【问题讨论】:

  • if($result = \App\Models\Option::where('option',$option)->value('value')){ return $result; } 其他 { 返回 $default; }
  • 在退货时尝试使用“{}”
  • 感谢您的回答,但请提供更多帮助

标签: laravel laravel-5 eloquent laravel-7


【解决方案1】:

检查您的命名空间

错误告诉您App\Http\Controllers\Admin\get_option() 不是函数。这意味着它正在当前命名空间中寻找函数。您是否从错误的路径中包含/要求它?。

创建一个帮助类

我目前没有 Laravel7 项目,但我在 Laravel5 中所做的是创建辅助类而不是普通函数。以你为榜样:

将此保存为app/Helpers/OptionsHelper.php 或类似名称。

<?php

namespace App\Helpers;

class OptionsHelper
{
  /**
   * Private constructor, `new` is disallowed by design.
   */
  private function __construct()
  { }

  public static function getOption($option, $default = null){
    if($result = \App\Models\Option::where('option', $option)->value('value')) {
      return $result;
    }
    else {
      return $default;
    }
  }
}

使用use App\Helpers\OptionsHelper 导入此助手并调用OptionsHelper::getOption 而不是get_option

【讨论】:

  • 谢谢它工作正常...在调用函数我的问题
  • 一个问题...我不能在视图中调用此方法?? OptionsHelper::getOption('chart_day_count',10) eroor 找不到类'OptionsHelper'(查看:
  • 你不应该直接在视图中进行这样的调用。而是让变量在视图中可用,因此从控制器调用 OptionsHelper 以在视图中创建变量。
  • 请帮我打电话
  • 不,我的意思是$chartDayCount = OptionsHelper::getOption('chart_day_count',10),然后将$chartDayCount 传递给视图。
【解决方案2】:

将函数设为公共函数并使用self::function_name()调用该函数;

【讨论】:

  • 请不要用普通的 1 衬里回答。更加详细一些。如果这将帮助用户正确理解解决方案,还包括一些代码。只要您有足够的声誉,您就可以像这样回答这个问题。 #
  • 感谢您的建议。
猜你喜欢
  • 2022-11-15
  • 2016-02-26
  • 2020-12-05
  • 2020-02-26
  • 2019-11-17
  • 2017-08-23
  • 2019-05-13
  • 2017-10-16
  • 2018-10-16
相关资源
最近更新 更多