繁体   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