Laravel 7 - 为什么 Toastr 在我实现中间件后突然停止显示?



>我正在使用一个 Toastr 插件,我在这里得到了 TJGazel Laravel Toastr,它在我实现 Toastrs 的项目的所有部分都完美运行(所有这些都在我的所有控制器中实现(。

但是当我尝试将所有 Web 路由放入中间件时,它们停止显示,尽管它在控制台、开发人员工具(网络选项卡(和 laravel 日志文件中没有显示任何类型的错误或消息。它们仅不显示/显示。

我对此问题原因的唯一提示是中间件,因为我有旧项目的副本(就在我实现中间件之前(,并且旧项目中的所有 toastr 都可以正常工作。

这是我实现中间件(web.php(的路由的完整代码:

<?php
use IlluminateSupportFacadesRoute;
use SpatieActivitylogModelsActivity;
Auth::routes();
Route::get('/', function () {
return view('welcome');
});
Route::view('unauthorized', 'unauthorized');
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware' => ['user_middleware']], function() //Group middleware for authenticated / logged-in users
{
Route::get('/logout', 'AuthLoginController@logout');
Route::resource('master/vendor', 'MasterVendorController');
Route::get('vendor/datatable', 'MasterVendorController@datatable')->name('vendor/datatable');
Route::resource('master/product', 'MasterProductController');
Route::get('product/datatable', 'MasterProductController@datatable')->name('product/datatable');
Route::get('product/datatableTrash', 'MasterProductController@datatableTrash')->name('product/datatableTrash');
Route::post('product/undoTrash/{id}', 'MasterProductController@undoTrash')->name('product/undoTrash/{id}');
Route::get('master/product/history/{id}', 'MasterProductController@history')->name('master/product/history/{id}');
Route::resource('transaction/purchase-order', 'TransactionPurchaseController');
Route::get('transaction/purchase-order/vendor/popup_media', 'TransactionPurchaseController@popup_media_vendor')->name('transaction/purchase-order/vendor/popup_media');
Route::get('transaction/purchase-order/product/popup_media/{id_count}', 'TransactionPurchaseController@popup_media_product')->name('transaction/purchase-order/product/popup_media/{id_count}');
Route::get('browse-product/datatable', 'MasterProductController@datatable_product')->name('browse-product/datatable');
Route::get('browse-vendor/datatable', 'MasterVendorController@datatable_vendor')->name('browse-vendor/datatable');
Route::get('purchase-order/datatable', 'TransactionPurchaseController@datatable')->name('purchase-order/datatable');
Route::post('transaction/purchase-order/receive/{id}', 'TransactionPurchaseController@received')->name('transaction/purchase-order/received/{id}');
Route::get('transaction/purchase-order/print/{id}', 'TransactionSaleController@print')->name('transaction/purchase-order/print/{id}');
Route::resource('transaction/sales', 'TransactionSaleController');
Route::get('transaction/sales/product/popup_media/{id_count}', 'TransactionSaleController@popup_media_product')->name('transaction/sales/product/popup_media/{id_count}');
Route::get('sales/datatable', 'TransactionSaleController@datatable')->name('sales/datatable');
Route::get('transaction/sales/print/{id}', 'TransactionSaleController@print')->name('transaction/sales/print/{id}');
Route::get('transaction/stock', 'TransactionStockController@index')->name('transaction/stock');
Route::get('transaction/stock/product/popup_media', 'TransactionStockController@popup_media_product')->name('transaction/stock/product/popup_media');
Route::post('transaction/stock', 'TransactionStockController@update')->name('transaction/stock');
Route::get('stock/report', 'TransactionStockController@report')->name('stock/report');
Route::resource('user', 'UserController');
Route::get('/datatable_Activities', 'UserController@datatable_Activities')->name('datatable_Activities');
Route::get('/RecentActivities', 'UserController@RecentActivities')->name('RecentActivities');
Route::get('/password', 'UserController@Password');
//Route::get('/calendar', 'UserController@Calendar');
Route::post('user/updatePassword', 'UserController@updatePassword')->name('user.updatePassword');
});

这是我UserMiddleware.php的代码:

<?php
namespace AppHttpMiddleware;
use Closure;
class UserMiddleware
{
/**
* Handle an incoming request.
*
* @param  IlluminateHttpRequest  $request
* @param  Closure  $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!$request->user())
{
return redirect('unauthorized');
}
return $next($request);
}
}

当我尝试使用dd()时,它会显示 Toastr 返回的内容并找到它应该返回的值(我发现没有错误或警告消息(。同样,唯一的问题是它不显示烤面包机。

这是我在其中一个控制器中实现的 Toastr:

Toastr::success('Product created Successfully', 'Success');
return redirect()->route('product.index');

我的布局文件('layouts.backend.app'(包含toastr所需的脚本和css文件(首先加载JQuery,然后引导Toastr - CSS和JS文件(。我还在每个刀片文件中都包含了{!! toastr()->render() !!}@extends('layouts.backend.app').

我一直在搜索与此问题相关的内容,但尚未找到。 造成此问题的真正原因可能是什么,我该如何解决此问题?

更新:

在调试时,我发现当使用return view()时它可以工作,但当涉及到return redirect()->route('');return redirect()->back();时,它不会显示。

更新(2/3/2021(:

似乎问题与我在路由(web.php(中使用的中间件有关,仍然不知道如何在不删除中间件的情况下解决它。

根据此链接的引用,问题可能是由于 StartSession 中间件造成的。尝试对内核中的中间件重新排序.php或者可能有其他软件包可能导致问题,因为根据上面的链接,Spatie Google跟踪代码管理器导致会话问题。也许容器中覆盖了类的某个配置?

因此,如果您可以提供 composer.json,我们也许能够找出导致问题的包。可能是可能导致会话问题的其他软件包。

还可以尝试在配置/应用程序中重新排序 toastr 服务提供商.php到最后一个位置

如果没有这些作品,请尝试使用这个: https://codeseven.github.io/toastr/

最新更新