我是全新的laravel,并在我的第一个应用程序设置管理员面板授权.我目前设置我的文件设置的方式是:
controllers/ admin/ dashboard.PHP settings.PHP non-admin-controller1.PHP non-admin-controller1.PHP views/ admin/ dashboard.blade.PHP login.blade.PHP template.blade.PHP non-admin-view1.PHP non-admin-view1.PHP non-admin-view1.PHP
…这些是我的路线
Route::get('admin/login',function() { return View::make('admin.login'); }); Route::get('admin/logout',function() { return Auth::logout(); return Redirect::to('admin/login'); }); Route::post('admin/login',function() { $userdata = array('username' => Input::get('username'),'password' => Input::get('password')); if (Auth::attempt($userdata)) { return Redirect::to('admin'); } else { return Redirect::to('admin/login')->with('login_errors',true); } }); Route::controller('admin.dashboard'); Route::get('admin',array('before' => 'auth',function() { return Redirect::to_action('admin@dashboard'); })); Route::filter('auth',function() { if (Auth::guest()) return Redirect::to('admin/login'); });
当我去/管理我被重定向到管理员/登录并要求登录,这正是我需要它的工作.登录后,我被重定向到管理员/仪表板,这一切都看起来不错.我有2个问题.
>当我去管理/注销我已经注销但迎接一个空白页(它不是重定向到管理员/登录)
>注销时,如果我去管理员/仪表板我遇到了错误
Error rendering view: [admin.dashboard]
Trying to get property of non-object
我在这里做错了什么?我做什么对了?为管理员创建单独的软件包会更有意义吗?谢谢!
所以我能够解决我的问题略有不同.我在控制器文件夹的根目录中创建了一个(基础)Admin_Controller,一个构造函数在执行之前调用auth过滤器:
class Admin_Controller extends Base_Controller { public function __construct() { $this->filter('before','auth'); } }
然后将我所有管理相关的控制器放在/ controllers / admin中,扩展Admin_Controller并调用父构造函数:
class Admin_Dashboard_Controller extends Admin_Controller { public function __construct() { parent::__construct(); } public function action_index() { return View::make('admin.dashboard'); } }
这可能不是最有说服力的解决方案,但它可以做到这一点!