【问题标题】:Define a Laravel route with a variable part that is not a parameter?使用不是参数的可变部分定义 Laravel 路由?
【发布时间】:2015-05-09 20:55:24
【问题描述】:

我想定义这样的路线:

Route::put('businesses/?!?/reviews/{review_id}', 'BusinessesController@editReview');

匹配的网址如:

businesses/-1/reviews/12or

business/abc/review/12

但只使用review_id 参数调用BusinessController::editReview 方法:

function edit_review($review_id) { ... }

有效地使?!? 部分成为强制性但忽略其价值。

EDIT:关键是 editReview 方法应该只有一个参数。此外,我想给路线起一个名字,并用一个参数来调用它:

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

编辑:现在我想一想,“?!?”中应该包含什么?与上述route(...) 通话?

【问题讨论】:

  • 为什么不只添加一个方法参数而不使用它呢? function edit_review($ignore_this, $preview_id){}
  • 这就是重点 :-) 由于某些无法消除的原因,我希望它恰好有 1 个参数。此外,我想给它一个名字,并用一个参数来调用它:route('business.review',['review_id'=>1])
  • 我看到你已经想出了我的下一个问题。 ?!? 中应该包含哪些内容?如果你解释一下你真正想要做什么,也许会有所帮助......

标签: url laravel routing


【解决方案1】:

这通常使用嵌套控制器来解决(请参阅Laravel Docs,您需要向下滑动一点)

控制器

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2021-05-11
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2023-04-01
    • 2015-02-05
    相关资源
    最近更新 更多