Я застрял в проблеме политики. На самом деле у меня есть OrderEventHistoryPolicy и
class OrderEventHistoryPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can create the order event history.
*
* @param \App\User $user
* @param \App\Models\Order\Order $order
*/
public function create(User $user, OrderEventHistory $orderEventHistory, Order $order)
}
и OrderEventHistoryController
class OrderEventHistoryController extends Controller
{
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Order\Order $order
*/
public function store(Request $request, Order $order)
{
$this->authorize('create',OrderEventHistory::class, $order);
}
}
Моя цель - передать модель Order в класс политики ( OrderEventHistoryPolicy ), но в соответствии с
Документация Laravel 5.8, вы можете просто передать имя класса с помощью action , как 'OrderEventHistoryPolicy'. От
Передавая имя класса, я не могу пройти модель заказа (конечно).
Вот документация Laravel:
Как обсуждалось ранее, некоторые
такие действия, как создание, могут не требовать экземпляра модели. В этих
В таких ситуациях вы можете передать имя класса методу авторизации.
Имя класса будет использоваться для определения, какую политику использовать при
авторизация действия:
public function create(Request $request) {
$this->authorize('create', Post::class);
// The current user can create blog posts...
}
Я думал о том, чтобы передать пустую OrderEventHistory модель, подобную этой:
$this->authorize('create',new OrderEventHistory(), $order);
Но я не уверен, что это "правильный" и "чистый" способ сделать это.