刀片:
@can('see_similar', $similar, $in_pair)
...
@endcan
类AuthServiceProvider扩展服务提供程序:
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}()的参数太少,在第452行的/var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php中传入了2个参数,而实际上需要3个参数(查看:/var/www/html/resources/views/daters.blade.php)
虽然它的工作,如果我只传递一个参数"...函数($用户,$相似)",例如,我试图传递一个数组的参数,没有工作。
请向我解释如何传递几个参数。
2条答案
按热度按时间c8ib6hqw1#
来自文档:
Gates总是接收用户示例作为他们的第一个参数,并且可以选择接收其他参数,例如相关的Eloquent模型
您的问题是您向闭包函数传递了3个参数,您需要删除其中一个。
ttcibm8c2#
Barmaxon你的
boot()
没问题!如果您的路径包含
->middleware('can:see_similar')
,则需要选中web.php
我已经删除了它,然后可以传递许多变量: