我从控制器调用一个简单的函数:
flash('my message');
flash
函数位于App \ Http
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文件中添加了一个很小的测试函数,我也无法在控制器中使用它 这是命名空间问题吗?我不认为我必须在控制器顶部添加使用xxxx; ,因为helpers.php被添加到autoload和global?
EDIT。
我认为注册helpers.php文件是关键所在。我所做的只是将一些函数添加到全局文件中,但无法从我的控制器中获取它们。我在helpers.php文件中添加了一个非常简单的函数但是无法从控制器访问它:我是否需要向控制器添加任何东西以便能够使用帮助文件?
我设法通过在控制器方法中包含helpers.php文件来实现这一目的:
include(app_path() . '/helpers.php');
flash('my message');
现在允许我调用该函数。所以自动加载不起作用!有点困惑......
更新。 我必须将所需的函数放入类中并调用该类。这现在工作正常。我无法让helpers.php自动加载任何内容。
答案 0 :(得分:-1)
我会将帮助文件放在全局位置和composer.json文件中:
"files":[
"app/helper.php"
],
在 helper.php :
中function newflash($message)
{
session()->flash('flash_message', $message);
}
执行composer dump-autoload
就这么简单。
现在,您可以从应用程序的任何位置调用newflash()
方法。
答案 1 :(得分:-1)
不要忘记在服务提供商处注册您的课程。