Laravel宏不能自动加载

时间:2014-11-05 12:11:44

标签: laravel-4

我有以下目录结构

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不能自动加载?

1 个答案:

答案 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';