亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

后端和前端路由分開加載,互不干擾

后端和前端路由分開加載,互不干擾

PHP
largeQ 2023-05-26 17:51:37
我有兩種路由,管理路由和前端路由。前端路線Route::get('{locale?}/', ['uses' => '\App\Http\Controllers\loadViewController@home']);Route::get('{locale?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@index']);Route::get('{locale?}/{template?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@detail']);后端路線Route::prefix('admin/dashboard')->group(function () {  Route::get('/', 'DashboardController@index')->name('dashboard'); });現在,當我輸入 admin/dashboard 或 api/admin 時,laravel 使用前端路由加載視圖,而我希望加載后端視圖。所以為了過濾掉我試過的后端路由Route::group(['where' => ['page' => '^(?!admin|api)$', 'template' => '^(?!admin|api)$']], function ({  Route::get('{locale?}/', ['uses' => '\App\Http\Controllers\loadViewController@home']);  Route::get('{locale?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@index']);  Route::get('{locale?}/{template?}/{page}', ['uses' => '\App\Http\Controllers\loadViewController@detail']); });這顯然不起作用此外,前端路由不應該有/website之類的東西,它們都應該以/開頭我的問題是:如何在不干擾調用時分別加載后端和前端路由,即使它們在參數方面具有相同的 url 長度,請記住管理路由始終以 /admin 或 /api 開頭。注意:我不能將后端路由放在前端路由之前提前致謝!
查看完整描述

3 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

如果你愿意,你可以對路由參數施加約束locale

Route::pattern('locale', '^(?!(api|admin)$)(\w*)');

你可以把它放在boot你的方法中RouteServiceProvider,它現在將不允許locale路由參數匹配'api'or 'admin'。


查看完整回答
反對 回復 2023-05-26
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

您可以在 RouteServiceProvider 中注冊單獨的路由。以下是如何做到這一點。


在 RouteServiceProvider.php 里面做:


public function map()

{

    $this->mapFrontendRoutes();


    $this->mapAdminRoutes();

}

mapFrontendRoutes() 的定義:


protected function mapFrontendRoutes()

{

     Route::prefix('{locales?}')

         ->middleware('frontend')

         ->namespace($this->namespace.'\Frontend')

         ->group(base_path('routes/frontend.php'));

}

mapAdminRoutes() 的定義:


protected function mapAdminRoutes()

{

     Route::prefix('admin')

         ->middleware('admin')

         ->namespace($this->namespace.'\Admin')

         ->group(base_path('routes/admin.php'));

}

我個人覺得這非常有用,有助于聲明無干擾和合乎邏輯的路線。開放反饋。


查看完整回答
反對 回復 2023-05-26
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

簡單的方法是將兩個 url 分組為單獨的組。例子如下:


Route::group(['prefix' => 'admin', 'as' => 'admin'], function () {

Route::post('/dashboard', 'AdminController@dashboard');

});


Route::group(['prefix' => 'home', 'as' => 'home'], function () {

Route::get('/record/{id}', 'HomeController@getRecord');

});


查看完整回答
反對 回復 2023-05-26
  • 3 回答
  • 0 關注
  • 222 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號