簡體   English   中英

Laravel 5.1視圖編輯器在中間件之前啟動

[英]Laravel 5.1 view composer initiates before middleware

我正在使用Laravel 5.1開發一個簡單的Web應用程序,我的開發環境是Homestead。

我有一個視圖編輯器自動將Auth::user()數據傳遞給管理面板相關的視圖。 大多數常規管理面板頁面(儀表板,設置等)使用AdminController ,它擴展了Laravel的Controller 特定的管理面板頁面(用戶,訂單等)有自己的控制器(分別是Admin\\UsersControllerAdmin\\OrdersController ),它們是擴展的AdminController

在沒有注冊的任何中間件routes的管理面板相關的路線,而不是AdminController加載auth中間件(如注冊的用戶嘗試加載網頁,檢查)。 並且沒有其他擴展AdminController控制器會覆蓋構造函數。

我的問題是,如果用戶沒有登錄並嘗試加載管理面板頁面(無關緊要;儀表板,設置,用戶,訂單 - 因為視圖編寫器要求每一個都傳遞Auth::user()數據)沒有警告說“你沒有被授權。” 或者沒有重定向到登錄頁面,只是拋出一個異常,說Auth::user()null

auth中間件不是先調用嗎? 如果不是我該怎么做才能防止拋出異常(順便說一下,從視圖作曲家return對我的觀點來說不是一個優雅的解決方案)?

提前致謝。


附錄

  • AdminController

     <?php namespace App\\Http\\Controllers\\Admin; use Illuminate\\Http\\Request; use App\\Http\\Requests; use App\\Http\\Controllers\\Controller; class AdminController extends Controller { public function __construct() { // After middlewares $this->middleware("auth"); $this->middleware("admin"); // Before middlewares $this->middleware("no-cache"); } /** * Display a listing of the resource. * * @return Response */ public function index() { return view("admin.index"); } } 
  • Admin\\OrdersController

     <?php namespace App\\Http\\Controllers\\Admin; use Illuminate\\Http\\Request; use App\\Http\\Requests; use App\\Http\\Controllers\\Controller; use App\\Order; class OrdersController extends Controller { /** * Display a listing of the resource. * * @return Response */ public function index() { $orders = Order::with("address")->get(); return view("admin.orders.index")->with("orders", $orders); } } 
  • ComposerServiceProvider

     <?php namespace App\\Providers; use Illuminate\\Support\\ServiceProvider; use Auth; class ComposerServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot() { view()->composer("layouts.admin.default", function ($view) { $admin = Auth::user(); $view->with([ "admin" => $admin, "picture" => $admin->pictures[0] ]); }); } /** * Register the application services. * * @return void */ public function register() { // } } 

注意: ComposerServiceProviderconfig/app.php注冊。

你的Admin\\OrdersController擴展App\\Http\\Controllers\\Controller ,它應該擴展App\\Http\\Controllers\\Admin\\AdminController 這就是為什么你沒有得到重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM