2015-03-08 21 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看看你得到了什么(因为你的例子是关于编辑,但我应该让你开始...)。