gpt4 book ai didi

php - Laravel 5 - link_to_route() 方法通过在末尾添加 "?"使我的路由参数变为查询字符串

转载 作者:可可西里 更新时间:2023-11-01 12:49:01 26 4
gpt4 key购买 nike

经过几个小时的搜索,我仍然找不到关于 L5 的答案。

我的问题是:

我想做一个这样的链接:

localhost:800/songs/you-drive-me-crazy

但是得到的是:

localhost:800/songs?you-drive-me-crazy

我的路由参数正在更改为查询字符串。

//路由.php

$router->bind('songs', function($slug)
{
return App\Song::where('slug', $slug)->first();
});


$router->get('songs', ['as' => 'songs.index', 'uses' => 'SongsController@index'] );

$router->get('songs/{songs}', ['as' => 'songs.show', 'uses' => 'SongsController@show'] );

我正在使用:

{!! link_to_route('songs.index', $song->title, [$song->slug])  !!}

我已经尝试了所有方法但仍未成功,您的建议可能会有所帮助。

谢谢。

最佳答案

您对 link_to_route 的使用不正确:

{!! link_to_route('songs.index', [$song->title, $song->slug])  !!}

第一个参数为路由名称,第二个参数为路由参数数组,最好使用key值。因为你没有显示你定义的路线,所以很难猜测这个关联数组应该是什么样子:

{!! link_to_route('songs.index', ['title'=>$song->title, 'slug'=>$song->slug])  !!}

另外,我建议您使用记录的函数:route(),请参阅:http://laravel.com/docs/5.0/helpers#urls

使用 route() 正确请求的路由:

{!! route('songs.index', ['title'=>$song->title, 'slug'=>$song->slug])  !!}

一个正确格式化的路由将是:

Route::get('songs/{title}/{slug}', ['as' => 'songs.index', 'uses' => 'SomeController@index']);

这将生成如下 URL:http://localhost:800/songs/you-drive-me-crazy/slug

如果您只想将标题添加到 URL 而不是 slug,请使用这样的路由:

Route::get('songs/{title}', ['as' => 'songs.index', 'uses' => 'SomeController@index']);

这将生成如下 URL:http://localhost:800/songs/you-drive-me-crazy/?slug=slug

使用

Route::get('songs/{slug}', ['as' => 'songs.index', 'uses' => 'SomeController@index']);

URL 将类似于:http://localhost:800/songs/you-drive-me-crazy/?title=title 假设 slug 现在是 you-drive-我疯了

route() 调用中添加的任何参数如果不存在于路由定义中,将作为 GET 参数添加。

关于php - Laravel 5 - link_to_route() 方法通过在末尾添加 "?"使我的路由参数变为查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30587262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com