我正在从Laravel 4.2升级到5.4并且我不明白为什么转换的路由不适用于URL:http:// {domain} /admin/page/provider.home
以下是Laravel 4.2中的相关细节:
Route::filter('provider_admin', function()
{
// Specific logic to potentially redirect to a specific page
}
Route::group(array('prefix' => 'admin/page'), function()
{
Route::get('/{page}', array( 'before' => 'provider_admin', 'as' => 'admin_page', 'uses' => 'Frozennode\Administrator\AdminController@page' ));
Route::get('/{page}/{id}', array( 'before' => 'provider_admin', 'as' => 'admin_page', 'uses' => 'Frozennode\Administrator\AdminController@page' ));
});
在Laravel 5.4中,过滤器已移至中间件,因此我有以下内容:
ProviderAdmin.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class ProviderAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
// Specific logic to potentially redirect to a specific page
return $next($request);
}
}
内部web.php
// Route::middleware('provider_admin')->prefix('admin/page')->group(function ()
Route::group(['prefix' => 'admin/page', 'middleware' => 'provider_admin'], function () {
{
Route::get('{page}', ['as' => 'admin_page', 'uses' => '\Frozennode\Administrator\AdminController@page' ]);
Route::get('{page}/{id}', ['as' => 'admin_page', 'uses' => '\Frozennode\Administrator\AdminController@page' ]);
die('ROUTE NOT FOUND');
});
kernel.php
'provider_admin' => \App\Http\Middleware\ProviderAdmin::class,
请求进入组,但与Laravel 4.2不同,它不会进入中间件,而是以“ROUTE NOT FOUND”结束。我错过了哪些其他基本问题,显然是在Laravel 5路由中引入的?
答案 0 :(得分:0)
试试这个
Route::group(['prefix' => 'admin/page', 'middleware' => 'provider_admin'], function () {
Route::get('{page}','\Frozennode\Administrator\AdminController@page')->name('admin_page');
Route::get('{page}/{id}','\Frozennode\Administrator\AdminController@page' )->name('admin_page_by_id');
die('ROUTE NOT FOUND');
});