我有一条动态模型识别路线。换句话说,我将所需的模型作为参数并在控制器中使用它。我的应用程序中有复杂的授权,我需要将模型类名称作为变量传递给$ user-> can()方法以使用策略,但由于某种原因它不起作用。这是我的代码:
政策:
public function view($user, Model $model) {
return $user->model_id == $model_id;
}
public function create($user) {
return $user->isAdmin();
}
控制器:
public function createModel($model) {
$model_class = $model . '::class';
if (Auth::user()->can('create', $model_class)) {
return $model_class::create();
}
return 'invalid_permissions';
}
如果我对模型类名称进行硬编码,则可以正常工作。例如,如果我的模型是'Car'并且在控制器中我放了:
if (Auth::user()->can('create', Car::class)) {
任何人都有任何想法为什么会这样以及如何解决它?我希望这是可能的,因为如果不是,我将不得不改变我的整个概念。
*注意:这是示例代码,而不是我的实际类