@zjohypxgb

Политика постоянно возвращает false?

Политика в Laravel всегда возвращает false.

Метод в контроллере:
public function destroy(Model $model, DestroyModel $request)
{
    //
}


Класс запроса:
public function authorize()
{
    $model = Model::find($this->route('model'));

    return $model && $this->user()->can('delete', $model);
}


Политика:
public function delete(User $user, Model $model)
{
    return $user->id === $model->user_id;
}


И всегда возвращается false. Я уже перепроверил все что можно, в БД user_id совпадает.
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@zjohypxgb Автор вопроса
Ошибка в документации Laravel. Там написано использовать $this->route('blabla'). По идее он должен возвращать значение параметра, но из-за фукнции авто-заполнения туда сразу вставляется модель, а не значение параметра. Поэтому если используете авто-заполнение делайте так:

$model = $this->route('model');

return $model && $this->user()->can('delete', $model);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
Пройдите дебаггером весь код.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы