我正在尝试创建动态网址:
<li><a href="{{url("test/$test->id")}}">{{$test->test_name}}</a></li>
这样就可以像我这样悬停给我结果:
test/1
test/2
test/3
而我想要这样的东西
test/abc
test/def
test/xyz
但想要在id的基础上获取数据,那么如何使用id获取数据,但是在url上显示lasomething其他
路线
Route::get('/test/{id}','Frontend\HomePageController@profile');
答案 0 :(得分:0)
首先,您需要安装此软件包
然后,在您的配置文件方法成功安装后,执行此操作以从数据库中获取数据
$decodedId = Hashids::decode($id)[0];
然后在循环视图中执行此操作
$encodedId = Hashids::encode($test->id);
<li><a href="{{url("test/$encodedId")}}">{{$test->test_name}}</a></li>
您可以转储var以查看正在进行的操作
答案 1 :(得分:0)
所以,如果你想做一个这样的路线:
Route::get('test/{test}', 'TestController@show')->name('test.show');
然后在你的观点中你可以这样做:
<a href="{{ Route('test.show', $test) }}">{{ $test->name }}</a>
至少有两个选项:
选项1
您可以在路线服务提供商中注册绑定。
在RouteServiceProvider
中执行以下操作:
Route::bind('test', function ($slug) {
return \App\Test::where('slug', $slug)->firstOrFail();
});
假设您有一个Test
的Eloquent模型,其中包含一个唯一字段(我已使用slug
)来获取条目。
本教程非常清楚:https://mattstauffer.co/blog/implicit-model-binding-in-laravel-5-2/
选项2
另一种方式。如果您知道您永远不想在URL中引用测试的id
并且总是想要引用另一个唯一字段(例如slug
),那么您可以自定义Laravel使用的键名称通过覆盖模型上的getRouteKeyName()方法。
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
请参阅此处的文档:https://laravel.com/docs/5.4/routing#route-model-binding