我是全新的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');
}
}
这可能不是最有说服力的解决方案,但它可以做到这一点!