获取对Laravel 5.2中函数的未定义调用
我正在从控制器调用一个简单函数:获取对Laravel 5.2中函数的未定义调用,laravel,laravel-5,laravel-5.2,Laravel,Laravel 5,Laravel 5.2,我正在从控制器调用一个简单函数: 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 funct
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文件中添加了一个很小的测试函数,我也不能在controller中使用它。这是名称空间问题吗?我不认为我必须添加一个使用xxxx在控制器顶部,helpers.php被添加到自动加载和全局
编辑 我相信helpers.php文件的注册是这里的关键。我所做的只是将一些函数添加到全局文件中,但无法从控制器访问它们。我在helpers.php文件中添加了一个非常简单的函数,但无法从控制器访问它:为了能够使用helpers文件,是否需要向控制器添加任何内容 通过在控制器方法中包含helpers.php文件,我成功地实现了这一点:
include(app_path() . '/helpers.php');
flash('my message');
现在我可以调用这个函数了。所以自动加载不起作用!有点困惑
更新。
我必须将所需的函数放入一个类中并调用该类。这个现在很好用。我无法让helpers.php自动加载任何内容。我会将helper文件放在全局位置,并放在composer.json文件中:
“文件”:[
“app/helper.php”
],
在helper.php中:
函数newflash($message)
{
session()->flash('flash_message',$message);
}
执行composer转储自动加载
就这么简单
现在,您可以在应用程序中的任何位置调用
newflash()
方法。不要忘记在服务提供商中注册您的类。谢谢-尽管仍然收到相同的消息。我把“文件”放在层次结构的更高一级…尝试另一个方法名而不是flash。。例如helper.phpThanks中的newflash()将在我的机器上尝试创建每个类时都需要这样做吗?不要为有口才的模特做这些。。。谢谢你在我的机器前试试这不是我想要的。。。它应该像自动加载我可以访问的函数的简单php文件一样简单-请参阅上面的更新,谢谢