0
我有以下目錄結構Laravel宏不自動加載
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
不自動加載?
感謝 - 這是一個關於自動加載文件的好建議。我仍然不明白爲什麼'Event :: listen'工作,而'Form :: macro'沒有。糾正我,如果我錯了,但他們都不是他們調用他們的門面的靜態方法? – darronz 2014-11-05 17:32:23
我已經試過在乾淨的Laravel安裝上模擬你的場景,事件或宏工作都沒有,除非預先加載這個文件,這是預期的(所以我不知道它是如何在你的情況下工作的,沒有以某種方式明確包括'Events.php'文件)。我也注意到,我的第一個關於使用composer autoload文件的建議(雖然是一種有效的自動加載方式)在這種情況下不起作用,因爲它在Facades被別名之前包含代碼,並且它會拋出Class not found錯誤。它工作的唯一方法是將文件包含在'global.php'中。 – Bogdan 2014-11-05 18:22:39
你100%正確。我只是嘗試了相同的結果。 'last_login'正在更新,因爲我最近從'zizaco/Confide'切換到'cartalyst/Sentry',並且機制在其他地方。我想'last_login'沒有被記錄在舊系統中,我從來沒有注意到。 – darronz 2014-11-06 04:06:48