PHP如何正确创建网址?

时间:2018-10-08 08:18:36

标签: php laravel url

我从不了解如何创建正确的URL。每次最终我试图弄清楚是否应该执行?var = value &var = value ,然后再执行?var = value 已经存在,那么我最终会得到?var = value&var = value

P.S。我正在与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的函数? (知道何时使用?或&并不会一直添加现有值,而是如果已经存在则替换它们

3 个答案:

答案 0 :(得分:0)

如果您使用Laravel,我认为您应该使用一些辅助功能:

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

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

答案 1 :(得分:0)

URL中应该只有一个?,用于分隔URI和参数,其余键/值对由&分隔,如果您需要将& or ?传递为参数,那么您需要encode

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

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

答案 2 :(得分:0)

Laravel带有route帮助器,可通过传递用于注册路线的名称来快速生成网址。

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

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

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

如果ny route采用这样的参数

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

在视图中,我将生成这样的网址

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

由于您想让分页,Laravel在分页中碰到了麻烦。当您想对视图中的内容进行分页时,必须仅在模型上调用paginate函数,而laravel将处理所有的路由。例如,我有一个Person模型,您可以在控制器中像这样

$persons = Person::paginate(25)

在您看来要生成分页,您将必须这样做

{{ $persons->links() }} 

仅此而已