【问题标题】:Final Route URL Change Laravel 5.5最终路由 URL 更改 Laravel 5.5
【发布时间】:2017-10-23 05:16:30
【问题描述】:

我正在做一个学校项目。在处理学校详细信息页面时,我遇到了 URL 问题。我的客户需要一个干净的网址来运行 AdWords。我的学校详情页网址:http://edlooker.com/schools/detail/4/Shiksha-Juniors-Ganapathy。但他需要它,就像http://edlooker.com/Shiksha-Juniors-Ganapathy。如果有人帮助我,那将很有帮助,在此先感谢。

【问题讨论】:

  • 你能把网址发给我吗???
  • 是的,edlooker.com 这是网站 URL,但问题在于这些类型的 URL。 edlooker.com/schools/detail/4/Shiksha-Juniors-Ganapathy
  • 你的路线代码???
  • 在我看来,第一个网址尽可能地方便用户使用
  • 您应该在生产环境中禁用调试。在.env 文件中将APP_DEBUG=true 更改为APP_DEBUG=false

标签: php laravel routes laravel-5.5


【解决方案1】:

您需要在 web.php(如果是 laravel 5.x)或 routes.php(如果是 laravel 4.2)中的所有路由之后定义此路由。

Route::get('{school}','YourController@getIndex');

你的控制器应该有getIndex这样的方法,

public function getIndex($school_name)
{
  print_r($school_name);die;  // This is just to print on page,
  //otherwise you can write your logic or code to fetch school data and pass the data array to view from here.
}

这样,您就不需要使用数据库根据URL段获取URL,您可以直接在数据库中查看学校名称,从数据库中获取数据后,您可以将其传递给学校细节视图。它会达到你的目的。

【讨论】:

    【解决方案2】:

    检查文档中的Route Model Binding 部分。

    自定义键名

    如果您希望模型绑定在检索给定模型类时使用 id 以外的数据库列,您可以覆盖 Eloquent 模型上的 getRouteKeyName 方法:

    /**
     * Get the route key for the model.
     *
     * @return string
     */
    public function getRouteKeyName()
    {
        return 'slug';
    }
    

    【讨论】:

      【解决方案3】:

      在这种情况下,您将必须使用一个前端控制器来处理所有请求并通过slugs 获取数据,例如:

      public function show($slug)
      {
           $page = Page::where('slug', $slug)->first();
           ....
      }
      

      您的路线可能如下所示:

      Route::get('{slug}', 'FrontController@show');
      

      【讨论】:

      • 但是如何使用他提到的url?根据您的回答,我们必须在 url 中使用 show 段。然后它会捕获该函数,然后我们可以使用slug
      • 他需要保留一张桌子,上面有蛞蝓和相关信息。对于任何复杂的应用程序来说,这都是一个糟糕的架构,但如果他的老师想要这个,OP 就别无选择了。
      • 我的意思是,如果这个show() 将在前端控制器内部,那么,为了将我们的请求指向它,我们需要在url 中使用这个词show。然后show()会根据slug返回正确的页面。
      • 看起来这是学校的项目(作为客户,他确实这么说)。
      • @HimanshuUpadhyay 你不需要在 URL 中添加 show。路线看起来像Route::get('{slug}', 'FrontController@show');
      猜你喜欢
      • 2018-08-05
      • 2018-06-23
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2019-07-17
      • 2019-05-05
      相关资源
      最近更新 更多