gpt4 book ai didi

拉维尔 5.4 : How to DO NOT use route parameter in controller

转载 作者:行者123 更新时间:2023-12-05 08:15:28 26 4
gpt4 key购买 nike

我正在开发一个多语言应用程序并尝试制作一个中间件来将路由 {locale} 前缀传递给 URL。但是现在我不需要在 Controller 中使用这个 {locale} 参数,例如:

public function getPost(App\Post $post)
{
return view('welcome')->withPost($post);
}

但上面的代码不起作用,除非我将 App\Post $post 更改为 $locale, App\Post $post

问题是因为每当我创建一个新的 Controller 时我都需要传递 $locale 参数。那可不酷。

如何避免将 $locale 参数传递给所有 Controller ?我不需要它,因为我已经在我的中间件上使用了它。

更新:

路由\web.php

Route::prefix('{locale}')->middleware('locale')->group(function () {     

Route::get('/', 'PageController@getHome')->name('welcome');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

...

// This route must be the last!
Route::get('/{post}', 'PageController@getPost')->name('post');
});

最佳答案

在 Laravel 的路由类中有一个 forgetParameter() 方法,它可以从解析到 Controller 方法中移除一个参数。

它可以用于例如在中间件中,通过这样调用它:

$request->route()->forgetParameter('locale');

然后该参数将从 Controller 调度程序的参数属性中删除,因此不会作为参数解析到 Controller 方法中。

关于拉维尔 5.4 : How to DO NOT use route parameter in controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com