Php Laravel 4过滤器和视图生成器
我为自己创建了一个过滤器和一个视图生成器。首先,以下是代码: 我的管理员筛选器:Php Laravel 4过滤器和视图生成器,php,laravel,laravel-4,Php,Laravel,Laravel 4,我为自己创建了一个过滤器和一个视图生成器。首先,以下是代码: 我的管理员筛选器: Route::filter('admin', function() { if (Auth::check()) { $roles = Auth::user()->role; if ($roles == '5') { return Redirect::to('news/index')->with('roles',
Route::filter('admin', function()
{
if (Auth::check())
{
$roles = Auth::user()->role;
if ($roles == '5')
{
return Redirect::to('news/index')->with('roles', $roles);
}
}
else
{
return View::make('errors.401');
}
});
和我的视图生成器(在global.php中):
所以它不起作用。我想使用我的管理员帐户访问一些页面(该帐户的角色等于5,数据库中的“角色”列)。我在路由中创建了一个组,但当我尝试访问某个页面时,它会将我重定向到我的新闻/索引页面
我如何设置它以使任何需要管理员角色的页面都可查看
如果有帮助的话,我还使用Jeffrey Way的生成器制作了一个脚手架。我在我的应用程序中做了一些非常类似的事情,但在我自己尝试了一些错误之后,我认为验证用户和管理员身份的最佳方法是使用两个单独的过滤器。所以,以下是我所做的: 我有一个
auth
过滤器,只需将用户登录到-
Route::filter('auth', function() {
if (Auth::guest()) return Redirect::to('login');
});
除此之外,我还有一个auth.admin
过滤器,用于检查登录用户角色:
Route::filter('auth.admin', function() {
if(Auth::user()->userprofile->security_level < 4) {
return Redirect::route('projects.home');
}
});
使用此设置,使用auth
和auth.admin
将您只希望管理员访问的页面添加到后一个路由组
现在,使用此设置,您不需要检查作曲家中的逻辑。理想情况下,您的路由(或控制器,基于您的参数)应该处理您的路由逻辑
您可以这样重写您的作曲家:
View::composer( array( 'common.menu_addition','common.base_errors' ), function( $view ) {
// get all categories using the category model
$categories = Category::all();
$view->with( 'categories', $categories );
});
编写器用于传递同一组数据或为一组视图执行同一组任务
我相信这会解决你的问题;)
Route::group(array('before' => 'auth'), function() {
Route::get('user', array('as' => 'user.home', 'uses' => 'UsersController@index'));});
}
Route::group(array('before' => 'auth|auth.admin'), function() {
Route::get('user/create', array('as' => 'user.create', 'uses' => 'UsersController@create'));
});
View::composer( array( 'common.menu_addition','common.base_errors' ), function( $view ) {
// get all categories using the category model
$categories = Category::all();
$view->with( 'categories', $categories );
});