2015-03-08 55 views
1

我要定義這樣的路線:使用不是參數的可變部分定義Laravel路線?

Route::put('businesses/?!?/reviews/{review_id}', '[email protected]'); 

匹配類似的網址是:

businesses/-1/reviews/12or 

business/abc/review/12 

但調用BusinessController::editReview方法只用review_id說法:

function edit_review($review_id) { ... } 

有效地使?!?部分是強制性的,但忽略其值。

編輯:點是editReview方法應該只有一個參數。此外,我想給的路線名稱,並只有一個參數調用它:

route('business.review',['review_id'=>1]) 

編輯:現在,我想想,什麼是應該去「?!?」部分用route(...)撥打?

+0

爲什麼不只是添加一個方法的參數,但不使用它? 'function edit_review($ ignore_this,$ preview_id){}' – lukasgeiter 2015-03-08 17:25:34

+0

好吧,這就是整個觀點:-)我希望它有1個參數,因爲某些無法消除的原因。此外,我想給它一個名字,並用一個參數來調用它:'route('business.review',['review_id'=> 1])''。 – 2015-03-08 17:29:11

+0

我看到你已經想出了我的下一個問題。實際上應該怎麼做'?!?'?如果你解釋你真正想要做什麼,這可能會有所幫助...... – lukasgeiter 2015-03-08 18:22:59

回答

0

這是通過使用嵌套控制器(見Laravel Docs,你需要scoll下來一點點)

控制器

class BusinessReviewController extends BaseController { 

    public function show($businessId, $reviewId) 
    { 
     // 
    } 

} 

路線

Route::resource('businesses.reviews', 'BusinessReviewController'); 

通常解決這使您能夠像您想要的那樣呼叫路線(businesses/1/reviews/12route('business.review',['businessId' => 1, 'reviewId' => 12])

基本上,這是一個像往常一樣的ResourceController,具有普通ResourceController所具有的所有路由。只是運行php artisan routes看看你得到了什麼(因爲你的例子是關於編輯,但我應該讓你開始...)。