【发布时间】:2020-01-07 22:09:20
【问题描述】:
我正在使用 laravel Policy 和 Gate。
我需要在策略中包含__construct($id)。
我的政策:
<?php
namespace App\Policies;
use App\Models\Button;
use App\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class BotPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct($id)
{
#First Step
$this->bot = Bot::findOrFail($id);
#Second Step
if ( $this->bot->hasRole('admin') )
return true;
#Third Step
if ( $this->bot->status != 1 )
return false;
}
public function button(?User $user, $id)
{
#Fourth Step
if ( $this->bot->account()->max >= $this->bot->button()->count() )
return true;
#Fail
return false;
}
}
我的控制器:
public function create()
{
if ( Gate::denies('bot-button', request('id') ) )
echo "NO";
#SOME CODE HERE
}
AuthServiceProvider:
public function boot()
{
$this->registerPolicies();
Gate::define('bot-button', 'App\Policies\BotPolicy@button');
但是对于策略中的这段代码
public function __construct($id)
我给出这个错误
无法解析的依赖解析 [Parameter #0 [ $id ]] in 类 App\Policies\BotPolicy
【问题讨论】: