我打算在視圖被渲染前執行一些操作:判斷用戶權限和顯示選單等.
但是現在遇到了一個問題,
我的操作過程是:
先在app.php的providers中添加:
AppLibraryViewComposerComposerServiceProvider:: class,
然後在app/Library/ViewComposer目錄下新建了服務提供者:
namespace AppLibraryViewComposer;
use IlluminateSupportServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot() {
// 使用对象型态的视图组件...
view()->composer(
'*', 'App\Library\ViewComposer\ViewComposer'
);
public function register() {
}
}
我的服務是:
namespace AppLibraryViewComposer;
use IlluminateContractsViewView;
//use IlluminateHttpRequest;
class ViewComposer {
public function __construct() {
echo 1111;
exit;
}
public function compose(View $view) {
echo 1111;
exit;
}
}
但是我在前台,無論怎麼樣,都無法觸發echo 1111;事實上,我認為我的這個服務根本沒有被加載,我刪除了app.php文件內的所有內容,但是前台頁面依然可以正常顯示,app.php裡的providers數組不是每次請求都被加載嗎?沒理由不加載我的ComposerServiceProvider啊,而且為什麼刪除了app.php文件的內容還可以正常顯示頁面呢?
剛剛照你的描述重現了一下,發現運行成功了。
按樓主你的說法,刪除app.php檔案裡面的內容還是可以運行的話,那樓主可以去嘗試一下修改index.php文件,在第一行加上die,看看是否可以運行,個人認為是否是因為修改錯項目導致這種情況的發生。
還有,以後發表題目的時候,請注意一下格式規格。不然很難看懂。