Laravel重定向在Observers中不起作用

时间:2018-04-23 14:45:41

标签: laravel laravel-5

您好我需要在删除之前从Observer重定向laravel代码。这是我的代码,

<?php

namespace App\Observers;

use App\Models\Product;

class ProductObserver {

/**
     * Listen to the Product deleting event.
     *
     * @param  App\Models\Product $product
     * @return void
     */
    public function deleting(Product $product) {
        try {
            \Stripe\Stripe::setApiKey(env("STRIPE_SECRET"));

            $product = \Stripe\Product::retrieve($product->id);
            $product->delete();
        } catch (\Stripe\Error\Base $e) {
             return redirect()
               ->route("voyager.products.index")
               ->with([
                       'message'    => "Api error : ".$e->getMessage(),
                       'alert-type' => 'success',
             ]);
        }
    }

}

但是项目会在没有重定向的情况下被删除。有谁知道这样做的方法?提前谢谢。

1 个答案:

答案 0 :(得分:0)

非常感谢所有帮助过的人。在我看来,使用控制器真的很难。所以我做了一点挖掘,发现->send()我们可以从任何地方重定向。我添加它以防其他人也遇到这样的情况。我也无法使用Flash消息,因为我需要阻止删除。

public function deleting(Product $product) {
        try {
            \Stripe\Stripe::setApiKey(env("STRIPE_SECRET"));

            $product = \Stripe\Product::retrieve($product->id);
            $product->delete();
        } catch (\Stripe\Error\Base $e) {
            return redirect()
                            ->route("voyager.products.index")
                            ->with([
                                'message' => "Api error : " . $e->getMessage(),
                                'alert-type' => 'success',
                            ])->send();
        }
    }