在Laravel中为路线设置别名

我有几个相同的页面,它们具有不同的URL。如何为路由设置这些别名? 到目前为止,我只看到以下方法:

Route::get('/alias1','HomeController@someaction');
Route::get('/alias1.html','HomeController@someaction');
Route::get('/alias1.php','HomeController@someaction');
Route::get('/alias4','HomeController@someaction');

设置别名有更漂亮的方法吗?

kim_heechul 回答:在Laravel中为路线设置别名

您可以使用正则表达式约束轻松约束route参数的格式:

Route::get('{alias}','HomeController@someAction')
    ->where('alias','alias1|alias1.html|alias1.php|alias4');

public function someAction($alias)
{
    ...
}

仅当路径是您的4个别名之一时,路由才会匹配。

Laravel 6.x Docs - Routing - Parameters - Regular Expression Constraints where

,

您的路线:

Route::get('/{slug}','HomeController@someAction');

您的控制器功能:

function someAction($slug){
    #yourcode
}

OR

如果函数中的代码相同,并且与“ url”无关,则可以做另外一件事

Route::get('/{slug}',[ 'uses' => 'HomeController@someAction','as' => 'YourUniqueRouteName']);

这里

  

'as'=>'YourUniqueRouteName'

作为别名。

这里有一些参考链接,供您进一步了解。

Routing#parameters-regular-expression-constraints

Routing#named-routes(用于路由命名)

,

您可以使用命名路由

Route::get('/{slug}',HomeController@someAction)->name('uniqueNameForRoute');

have a look at Laravel naming routes documentation

本文链接:https://www.f2er.com/3104571.html

大家都在问