我有以下目录结构
app
| ...
| lib
| | Macro.php
| | Events.php
| ...
在composer.json
我有
"autoload": {
"classmap": {
...
"app/lib"
...
}
}
Events.php
加载正常并在事件触发时更新数据库:
<?php
Event::listen('auth.login', function($user) {
$user->last_login = new DateTime;
$user->save();
});
如果在视图中使用了宏,则 Macros.php
将始终返回错误Method messageBox does not exist
:
<?php
Form::macro('test', function()
{
return 'test';
});
我已经composer dump-autoload
了。为什么Macros.php
不能自动加载?
答案 0 :(得分:1)
composer.json中的自动加载classmap
部分激动地映射:classes。因此,在这种情况下,它不会帮助您,因为您在该文件中没有类声明。但是,您可以通过将其添加到自动加载部分来自动加载files
和作曲家:
"autoload": {
"classmap": [
...
],
"files": [
"app/lib/Macros.php"
]
}
作为替代方案,您可以随时手动将文件包含在Laravel&#39; app/start/global.php
中,如下所示:
require app_path() . '/lib/Macros.php';