2017-03-14 95 views
0

我創建一個儀表盤,用戶可以創建客戶嵌套控制器和路線

每個客戶都會有:分類,員工,... 現在我不知道如何組織路線。

例如,如果我創建了以下內容:(僞代碼)

Route::get('clients/{id}/'); 
Route::get('clients/{id}/categories'); 
Route::get('clients/{id}/categories/{category}'); 
Route::get('clients/{id}/categories/{category}/questions/{question}'); 

這似乎是很多不必要的參數..

你們怎麼去呢?我真的很想在一個單獨的頁面上將這些類別分開,這些員工在一個單獨的頁面上。

謝謝。

回答

1

在我的所有項目中,我避免在URL中使用很多嵌套實體,因此我分別訪問每一個實體,這也是laraasts的培訓網站Laracasts的@jeffrey_way推薦的。 所以,我會做到以下幾點:

Route::get('clients/{id}/'); 
Route::get('categories/{client_id}'); 
Route::get('categorie/{category}'); //not that i have removed the plural s from categorie(s) 
Route::get('question/{question}'); 

好運

+0

謝謝你,你知道jeffrey在解釋這個嗎? – Notflip

+0

如果我記得不錯,這個培訓:[從零開始的laravel 5.4](https://laracasts.com/series/laravel-from-scratch-2017) –

1

老老實實取決於您的應用程序有多大要成爲,我可能會組他們,所以仍然保持相同的結構。

Route::group('clients/{id}', function() 
{ 

    Route::get('/'); 

    Route::group('categories', function() 
    { 

     Route::get('/'); 
     Route::get('{category}'); 
     Route::get('{category}/questions/{question}'); 
    }) 
}) 

和你的一樣,但如果你在類別或客戶端上展開,我感覺它有點清潔。

0

在這種情況下,我寧願使用只有一個路線將所有參數,如在GET方法。所以,我會添加只有一個PARAM波紋管:

Route::get('client/create', '[email protected]');

因此,所有參數都將通過ClientControllerstore方法保持象下面這樣:

public function store(Request $request){ 
    $category = $request->get('category') 
    //...... 
    //get other get parameters like this when required 
} 

當我需要觸發這條路線我只想做類似如下:

<a href="{{url('client/create').'?category=1&question=2'}}">Create link</a>

如您所知,我們可以使用我們的舊全局好友GET變量來傳遞參數。