【问题标题】:PHP How to create urls properly?PHP 如何正确创建 url?
【发布时间】:2018-10-08 08:18:36
【问题描述】:

我一直不明白如何创建正确的 URL。每次我最终都想弄清楚我应该做 ?var=value 还是 &var=value 然后如果 ?var=value已经存在然后我以 ?var=value&var=value 结束。

附:我正在与 Laravel 合作。 (那么也许有一个内置函数?

例如: 我有分页,我的 URL 可能看起来像这样

www.example.com OR
www.example.com?name=John

然后我的分页链接是 href="?page=2" 我最终得到了

www.example.com?name=John?page=2

然后我想用 href="?page=3" 导航到下一页,我最终得到了这个。因为它一直在添加。

www.example.com?name=John?page=2?page=3

什么乱七八糟.... PHP 或 Laravel 是否有一个函数可以创建正确的 URL? (知道何时使用 ? 或 &,而不是一直添加现有值,而是如果它们已经存在则替换它们

【问题讨论】:

  • 当然,我知道。那么我是否需要每次都检查 if ?已经存在?
  • 你可以使用http_build_query

标签: php laravel url


【解决方案1】:

如果你使用 Laravel,我认为你应该使用一些辅助函数:

route('user.profile', ['id' => 1]);

它将通过路由名称和参数创建 url,它看起来像: http://sitename/user/profile?id=1 并且你可以找到一些有用的辅助函数here

【讨论】:

    【解决方案2】:

    URL 中应该只有一个? 分隔URI 和参数,其余键值对由& 分隔,如果需要传递& or ? 作为参数,则需要给encode他们。

    您可以将一个数组传递给http_build_query,它会为您构建网址

    在 laravel 中有 url helper 函数,您可以轻松使用它们。

    【讨论】:

      【解决方案3】:

      Laravel 带有一个 route 帮助器,它允许您通过传递您注册路线的名称来快速生成 url。

      Route::get('/', 'HomeController@index')->name('home.route')
      

      在这里您可以看到我将 home.route 传递给 name 方法,这是我用于此路由的名称。当我想在我的视图中为该路由生成 URL 时,我会这样做

      {{ route('home.route') }}
      

      如果任何路线都采用这样的一些参数

      Route::get('/person/{id}', 'HomeController@index')->name('home.route')
      

      鉴于我将生成这样的网址

      {{ route('home.route', ['id' =>$id]) }}
      

      因为你想让 juste 做分页,Laravel 自带了分页功能。当您想在视图中对某些内容进行分页时,您必须在模型上调用 paginate 函数,laravel 将为此处理所有路由。例如,我有一个 Person 模型,您可以在控制器中这样做

      $persons = Person::paginate(25)
      

      并且在你的视图中生成分页,你必须这样做

      {{ $persons->links() }} 
      

      仅此而已

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-19
        • 2015-03-19
        • 1970-01-01
        • 1970-01-01
        • 2016-09-12
        • 2022-08-16
        • 2011-12-19
        • 1970-01-01
        相关资源
        最近更新 更多