Laravel Nova v2 Action获取Symfony \ Component \ HttpKernel \ Exception \ HttpException而没有消息

时间:2019-09-16 18:13:14

标签: laravel-nova

我有此订单资源,并添加了两个操作,首先您必须使用OrderInTransit操作将订单设置为运输中,然后使用OrderDelivered操作将其交付。

在我的App\Nova\Actions\OrderInTransit中,我有这个

public function handle(ActionFields $fields, Collection $models)
{
    return DB::transaction(function() use ($fields, $models) {
        $delivery_cost = $fields->delivery_cost * 100;

        foreach ($models as $model) {
            // set as in transit
            // set reference number and courrier
            $model->update([
                'delivered' => 1,
                'remarks' => 'Courrier: ' . $fields->courrier . ', Reference: ' . $fields->reference,
                'delivery_cost' => $delivery_cost,
                'processed_at' => now()
            ]);

            // create notification
        }

        return Action::message('Order is in transit!');
    });
}

一旦订单正在运输中,如果客户已使用App\Nova\Actions\OrderDelivered收到了订单,则我必须对其进行更新。 OrderDelivered仍然一无所有,它是使用空的handle()和fields()刚创建的。

这是App\Nova\Order资源操作,

public function actions(Request $request)
{
    return [
        (new OrderInTransit)
            ->canSee(function($request) {
                return (optional($request->findModelQuery()->first())->delivered == 0) ? true : false;
            })
            ->canRun(function($request, $user) {
                return true;
            }),
        (new OrderDelivered)
            ->canSee(function($request) {
                return (optional($request->findModelQuery()->first())->delivered == 1) ? true : false;
            })
            ->canRun(function($request, $user) {
                return true;
            }),
    ];
}

OrderInTransit运作良好,并且可以更新模型。但是,当我尝试使用OrderDelivered Action时,它会将我重定向到nova 403

检查我的浏览器网络活动,

  

消息:“”,异常:“ Symfony \ Component \ HttpKernel \ Exception \ HttpException”

来自

  

/ nova-api / orders / action?action = order-delivered&pivotAction = false&search =&trashed =&viaResource =&viaResourceId =&viaRelationship =

我还设置了政策

protected $policies = [
    'App\Payment' => 'App\Policies\PaymentPolicy',
    'App\Order' => 'App\Policies\OrderPolicy',
];

这很奇怪,因为第一个动作运行了,第二个动作变成了403 Forbidden

0 个答案:

没有答案