2017-06-19 140 views
0

我有2個部分到我的網站,管理員端和公共端。我遇到的問題是,如果我去例如admin/menus然後我去我的公共方面,而不是去菜單頁面。路徑不顯示正確的頁面

我不知道爲什麼會發生這種情況。我試圖在公共場合重新安排路線的順序,但那不起作用,我已經對我做錯了什麼做了一個空白。

我的公共路線

<?php 

    Route::get('/', [ 
     'uses' => '[email protected]', 
     'as' => 'index', 
    ]); 

    Route::get('/{id}', '[email protected]'); 

    Route::post('/contact', [ 
     'uses' => '[email protected]', 
     'as' => 'contact', 
    ]); 

    Route::get('/{category}/{slug}', [ 
     'uses' => '[email protected]', 
     'as' => 'product.item', 
    ]); 

    Route::any('/search', [ 
     'uses' => '[email protected]', 
     'as' => 'search' 
    ]); 

我的管理菜單航線

Route::resource('admin/menus', 'MenusController'); 

我productItem功能

public function productItem($category, $slug) 
{ 

    $menus_child = Menu::where('menu_id', 0)->with('menusP')->get(); 

    $contact = Contact::all(); 

    $single_product = Product::where('slug', $slug)->get(); 

    return view('open::public.single_item', compact('menus_child', 'contact', 'single_product')); 
} 

誤差與這條路線

Route::get('/{category}/{slug}', [ 
    'uses' => '[email protected]', 
    'as' => 'product.item', 
]); 
進來

如果我刪除此路線,那麼它的工作原理,但我需要這條路線,所以我不能刪除它。

如果我錯過了其他需要提供的東西,請告訴我。

+0

什麼是錯誤,你可以進入更多細節嗎? –

+0

確保你在添加你的管理路線'admin/menus'後面有路線'/ {category}/{slug}' –

+0

你的路線'/ admin/menus'匹配路線'/ {category}/{slug}'。你定義的路由的順序很重要,所以像'/ admin/menus'這樣的顯式路由應該在**通配符路由之前被定義,比如'/ {category}/{slug}',否則你會經常遇到這個問題。 –

回答

0

這將工作,如果你把它放在頂部,但它可能會與我認爲的其他路線衝突。

Route::get('/{category}/{slug}', [ 'uses' => '[email protected]', 'as' => 'product.item', ]);

你可以嘗試這樣如果u想

Route::get('/category/{category}/{slug}', function (\Illuminate\Http\Request $request) { echo "ok"; });

0

您應該預先路線/{category}/{slug},以避免衝突。所以更換:

Route::get('/{category}/{slug}', [ 
    'uses' => '[email protected]', 
    'as' => 'product.item', 
]); 

通過:

Route::get('/open/{category}/{slug}', [ 
    'uses' => '[email protected]', 
    'as' => 'product.item', 
]); 

並更新鏈接到你的觀點,即路線。

0
Route::get('/{category}/{slug}', [ 
    'uses' => '[email protected]', 
    'as' => 'product.item', 
]); 

會趕上路徑的每個組合有兩個項目/admin/menus/admin/anything/foo/bar。你可能要與

Route::get('/{id}', '[email protected]'); 

遇到同樣的問題,如果您不能重命名你的路線,你需要把在上面的所有限制性更強的路線,你在底部限制較少的路線。

Route::resource('admin/menus', 'MenusController'); 


Route::get('/', [ 
    'uses' => '[email protected]', 
    'as' => 'index', 
]); 

Route::post('/contact', [ 
    'uses' => '[email protected]', 
    'as' => 'contact', 
]); 

Route::any('/search', [ 
    'uses' => '[email protected]', 
    'as' => 'search' 
]); 

Route::get('/{category}/{slug}', [ 
    'uses' => '[email protected]', 
    'as' => 'product.item', 
]); 

Route::get('/{id}', '[email protected]'); 

UPDATE

您有幾種選擇。

這裏有兩個。

您可以限制RegEx接受的路線。

Route Parameters>正則表達式約束

Route::get('/{category}/{slug}', function() { 
    return 'hello'; 
})->where('category', '[one]*[two]*[three]*[four]*[five]*'); 

或者你可以改變caffeine route through its config

php artisan vendor:publish --tag=genealabs-laravel-caffeine 

然後改變route/app/config/genealabs-laravel-caffeine.php

還有一些其他的方式爲好。我剛剛建立了一個快速測試網站,並開始弄清楚路線,看看最適合您的需求。

+0

我使用含咖啡因的模塊,因此我的東西都是模塊化的,所以我如何指定管理員/菜單在上面 – Isis