如何拉中间件,当laravel例外

时间:2017-12-02 00:51:05

标签: php laravel

我使用laravel5.5作为网络程序。但是当程序异常时,中间件不起作用。

我该怎么做呢?

我的中间件代码是list:

namespace App\Http\Middleware;

use Closure;


class ApiException
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        $env = config('app.env');
        $statusCode = $response->getSatusCode();
        if ($statusCode >= 500 && $env != 'dev') {
            $response->setContent(['error' => 'Internal Server Error']);
        }

        return $next($request);
    }
}

谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

// Create and display the custom field in product general setting tab add_action( 'woocommerce_product_options_general_product_data', 'add_custom_field_general_product_fields' ); function add_custom_field_general_product_fields(){ global $post; echo '<div class="product_custom_field">'; // Custom Product Checkbox Field woocommerce_wp_checkbox( array( 'id' => '_disabled_for_coupons', 'label' => __('Disabled for coupons', 'woocommerce'), 'description' => __('Disable this products from coupon discounts', 'woocommerce'), 'desc_tip' => 'true', ) ); echo '</div>';; } // Save the custom field and update all excluded product Ids in option WP settings add_action( 'woocommerce_process_product_meta', 'save_custom_field_general_product_fields', 10, 1 ); function save_custom_field_general_product_fields( $post_id ){ $current_disabled = isset( $_POST['_disabled_for_coupons'] ) ? 'yes' : 'no'; $disabled_products = get_option( '_products_disabled_for_coupons' ); if( empty($disabled_products) ) { if( $current_disabled == 'yes' ) $disabled_products = array( $post_id ); } else { if( $current_disabled == 'yes' ) { $disabled_products[] = $post_id; $disabled_products = array_unique( $disabled_products ); } else { if ( ( $key = array_search( $post_id, $disabled_products ) ) !== false ) unset( $disabled_products[$key] ); } } update_post_meta( $post_id, '_disabled_for_coupons', $current_disabled ); update_option( '_products_disabled_for_coupons', $disabled_products ); } // Make coupons invalid at product level add_filter('woocommerce_coupon_is_valid_for_product', 'set_coupon_validity_for_excluded_products', 12, 4); function set_coupon_validity_for_excluded_products($valid, $product, $coupon, $values ){ if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $valid; $disabled_products = get_option( '_products_disabled_for_coupons' ); if( in_array( $product->get_id(), $disabled_products ) ) $valid = false; return $valid; } // Set the product discount amount to zero add_filter( 'woocommerce_coupon_get_discount_amount', 'zero_discount_for_excluded_products', 12, 5 ); function zero_discount_for_excluded_products($discount, $discounting_amount, $cart_item, $single, $coupon ){ if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $discount; $disabled_products = get_option( '_products_disabled_for_coupons' ); if( in_array( $cart_item['product_id'], $disabled_products ) ) $discount = 0; return $discount; } 无法做到这一点。您可以改为Middlewares中的例外情况。

答案 1 :(得分:0)

在中间件中不能但是在Exception / Handler中可以..

任何时候发生异常..它没有进入中间件,它进入了Exception / Handler.php ..

在渲染方法

public function render($request, Exception $exception)
{
        if ($exception->getCode() >= 500 ||) {
            //return redirect()->route(); do something here
        }

        return parent::render($request, $exception);
}