【问题标题】:Getting undefined call to function in Laravel 5.2在 Laravel 5.2 中获取未定义的函数调用
【发布时间】:2016-06-26 00:19:04
【问题描述】:

我正在从控制器调用一个简单的函数:

flash('my message');

flash 函数位于 App\Http 中的 helpers.php 文件中

function flash($message)
{
    $flash = app('App\Http\Flash');

    return $flash->message($message);
}

flash 函数调用 Flash 对象

namespace App\Http;

class Flash{

     public function message($message)
     {
            session()->flash('flash_message', $message);
     }
}

Composer.json 包括:

"autoload": {
        "files": [
          "app/Http/helpers.php"
        ],

运行命令 - composer dump-autoload

页面正在显示 - 调用未定义的函数 App\Http\Controllers\flash()

我尝试了很多东西!即使我在 helpers.php 文件中添加了一个小测试函数,我也无法在控制器中使用它。
这是命名空间问题吗?我不认为我必须在控制器顶部添加 use xxxx; 作为 helpers.php 添加到自动加载和全局?


编辑。

我相信helpers.php文件的注册是这里的关键。我所做的只是向全局文件添加一些功能,但无法从我的控制器中获取它们。我在 helpers.php 文件中添加了一个非常简单的函数,但无法从控制器访问它:我是否需要向控制器添加任何内容才能使用 helpers 文件?

我已经设法通过在控制器方法中包含 helpers.php 文件来完成这项工作:

include(app_path() . '/helpers.php');
flash('my message');

这现在允许我调用该函数。所以自动加载不起作用!有点疑惑……

更新。 我必须将所需的功能放入一个类并调用该类。这现在工作正常。我只是无法让 helpers.php 自动加载任何内容。

【问题讨论】:

    标签: laravel laravel-5 laravel-5.2


    【解决方案1】:

    我会将帮助文件放在全局位置和您的 composer.json 文件中:

    "files":[
        "app/helper.php"
    ],
    

    helper.php 中:

    function newflash($message)
    {
        session()->flash('flash_message', $message);
    }
    

    做一个composer dump-autoload

    就这么简单。

    现在您可以从应用程序的任何位置调用newflash() 方法。

    【讨论】:

    • 谢谢 - 虽然仍然收到相同的消息。我放置了“文件”:声明在层次结构中更高...
    • 换个方法名代替flash..比如helper.php中的newflash()
    • 谢谢,在我的机器上试试
    【解决方案2】:

    不要忘记在服务提供商中注册您的课程。

    【讨论】:

    • 创建的每个类都需要这个吗?不要为雄辩的模型做这些...谢谢会在我的机器上尝试
    • 这不是我想要的......它应该像自动加载我可以访问的简单函数的简单 php 文件一样简单 - 请参阅上面的更新,谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 2016-12-16
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2021-07-03
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多