Laravel的自定义过滤器

时间:2014-12-16 00:20:08

标签: php laravel laravel-4

我有一个具有许多用户角色的应用程序。与AdminManager等相同。

在某些情况下,ManagerAdmin都有相同的权限来查看/编辑网页。 在route.php我创建了一个仅供管理员访问的过滤器组。

//filter.php
    Route::filter('admin', function()
    {
        if (Auth::guest() or ! Auth::user()->isAdmin()) {
            return 'Not Authorized';
        }
    });


//route.php
  Route::group(['before' => 'admin'], function(){
    //Some routes.....
  });

现在,我想通过查看userIdcourseId来检查是否允许用户查看该页面。如何在filter.php中获取这些值?

我有一个功能,可以检查用户是否有权使用该页面。但它需要传递两个变量(Atleast one variable,courseId

public static function isAllowed($userId, $courseId){
//Some conditions. 
}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

实际上它很容易。在filter.php中,您只需添加过滤器功能,然后在routes.php

上使用它

要对Route::get('my/url/{variable1}/{variable2})的过滤器进行Decalre:

Route::filter('myAweSomeFilter', function($route)
{
    $variable1 = $route->getParameter('variable1');
    if (thisAndThat)
    {
        doStuff;
    }
});

现在,如果要调用模型函数,可以在此函数中执行此操作。

因此,如果您有一个名为AuthModel的模型和一个名为coursePermissionCheck的静态函数,只需将其称为AuthModel::coursePermisssionCheck(),依此类推。您还可以在过滤器函数内部编写一个全新的函数并使用它。它只是另一个函数告诉RouteController如果不满足某个条件该怎么办。

如何使用此过滤器:'before' => 'admin|youFilter'

希望这有帮助。