刀片:
@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数组,没有用。
请向我解释如何传递几个参数。
答案 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
});
}