laravel授权能力检查参数太少

时间:2019-08-15 08:13:38

标签: php laravel laravel-blade

刀片:

@can('see_similar', $similar, $in_pair)
...
@endcan

AuthServiceProvider类扩展了ServiceProvider:

public function boot()
{
    $this->registerPolicies();
    Gate::define('see_similar', function ($user, $similar, $in_pair) {
        return count($similar) > 0 && (isset($in_pair)) && $in_pair !== 'in_pair';
    });
}

它给了我这个错误:

  

函数App \ Providers \ AuthServiceProvider :: App \ Providers {closure}()的参数太少,在/ var / www / html / vendor / laravel / framework / src / Illuminate / Auth / Access / Gate中传递了2个参数。第452行上的php,并且正好是3个(查看:/var/www/html/resources/views/daters.blade.php)

例如,如果我仅传递一个参数“ ... function($ user,$ similar)”,它会起作用。我试图传递一个args数组,没有用。

请向我解释如何传递几个参数。

1 个答案:

答案 0 :(得分:1)

来自文档:

  

门总是收到一个用户实例作为他们的第一个参数,并且可能   (可选)接收其他参数,例如相关的口才   模型

您的问题是您要向闭包函数传递3个参数,您需要删除其中一个。

public function boot()
{
    $this->registerPolicies();
    // Here you MUST pass at most 2 parameters
    Gate::define('see_similar', function ($user, $ELOQUENT_MODEL) {
        return $what_you_want; // A boolean value
    });
}