我将前缀参数传递给我的网站上的所有路线:
Route::prefix("{param}")->group(function () {
# code...
});
有时我需要在视图中调用route()
函数。问题出在那里,因为我需要将$param
作为第一个参数传递,如:
资源\视图\ welcome.blade.php
<a href="{{ route('about-us', $param) }}">About Us</a>
问题是:我不需要在$param
函数中传递route()
因为它没有必要。如何避免这种情况并执行以下操作:
<a href="{{ route('about-us') }}">About Us</a>
有没有办法创建一个中间件并设置一个&#34; global&#34;配置到route()
功能?
答案 0 :(得分:1)
通过使用@William Correa方法,我创建了一个辅助函数来为默认的Laravel函数助手route()
设置前缀参数。
应用\助手\的functions.php
function routex($route, $params = [])
{
if (!is_array($params)) {
$params = [$params];
}
// Set the first parameter to App::getLocale()
array_unshift($params, App::getLocale());
return route($route, $params);
}
现在,当我尝试按名称获取route()
的链接时,只需使用routex('about-us')
,routex()
函数会输入前缀参数,例如App::getLocale()
或其他任何内容想。
答案 1 :(得分:0)
在您的控制器中,您可以像这样保护您的路线:
public function __construct()
{
$this->middleware('auth');
}
而不是
Route::get('/about', 'yourcontroller@yourmethod')->name('name');
或在您的web.php中,您可以声明一个没有像这样的前缀的组
Route::namespace('name')->group(function () {
Route::get('/about', 'yourcontroller@yourmethod')->name('name');
});
答案 2 :(得分:0)
Route::get('about-us', 'AboutController@getAboutUs')->name('about-us');
现在,如果您致电route('about-us')
,它会生成网址〜/ about-us。