【问题标题】:Setting aliases for a route in Laravel在 Laravel 中为路由设置别名
【发布时间】:2023-04-04 09:14:01
【问题描述】:

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

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

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

【问题讨论】:

  • 对于控制器中的所有不同 URL,您的功能都相同吗?
  • 是的,一个功能是一样的
  • 你可以在路由中使用Regular Expression Constraints
  • 你所说的别名是什么意思,具体来说就是这 4 种可能性吗?
  • 我的意思是相同操作的不同网址。是的,我只需要这些可能性。

标签: php laravel routes alias


【解决方案1】:

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

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 Constraintswhere

【讨论】:

    【解决方案2】:

    你可以使用命名路由

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

    have a look at Laravel naming routes documentation

    【讨论】:

      【解决方案3】:

      您的路线:

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

      您的控制器功能:

      function someAction($slug){
          #yourcode
      }
      

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

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

      作为别名工作。

      这里有一些参考链接,以供更多理解。

      Routing#parameters-regular-expression-constraints

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

      【讨论】:

      • 'as' 从 5.3 开始发布,现在是 2016 年
      猜你喜欢
      • 2017-07-09
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 2019-03-24
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多