如何在laravel的url中隐藏id?

如何在laravel的url中隐藏id?,laravel,Laravel,我正在创建一个电子商务网站在拉威尔,我想隐藏在url的产品详细信息id。我可以在plz需要解决方案的代码中更改什么 Web.php Route::get('/productdetail{id}','ProductDetailController@display_products_details'); 控制器代码: public function display_products_details($id) { $data = DB::select('select * f

我正在创建一个电子商务网站在拉威尔,我想隐藏在url的产品详细信息id。我可以在plz需要解决方案的代码中更改什么

Web.php

Route::get('/productdetail{id}','ProductDetailController@display_products_details');
控制器代码:

 public function display_products_details($id)
    {
        $data = DB::select('select * from subcategory inner join product_details on subcategory.sub_id=product_details.sub_id where product_details.sub_id = ?',[$id]);
        return view('productdetails',['data'=>$data]);
    }
链接标签代码:

<a href="/productdetail{{ $value->sub_id }}">{{ $value->name_of_subcategory }}</a>
我得到的路径: 本地主机:8000/productdetail12


但实际上我想要Localhost:8000/productdetail

您可以通过将id作为请求正文的一部分来实现这一点,这样它在URL中就不可见了。通过浏览器开发人员工具检查请求正文的任何人仍然可以看到它

您可以通过使用表单发送post请求来完成此操作:

Route::post('/productdetail','ProductDetailController@display_products_details');
该链接将更改为一个表单:

<form method="POST" action="{{ action('ProductDetailController@display_products_details') }}>
@csrf
<input type="hidden" name="id" value="{{  $value->sub_id  }}" />
<button type="submit">{{ $value->name_of_subcategory }}</button>
</form>

请注意,虽然这在理论上是可能的,但它确实会导致非常糟糕的用户体验。例如,人们不能与他人共享产品链接

如果没有标识符,您如何知道您所指的产品?您不能这样做。要让它工作,id必须是可见的。你也应该在{id}之前添加一个/。您好,实际上我正在点击图片,我正在获取产品详细信息,我如何使用按钮进行链接..我在你的问题中看不到图片,这应该不重要。按钮内容可以是图像,也可以只是文本。这就要归结到造型了
public function display_products_details(Request $request)
    {
        $request->validate([ 'id' => 'required|int' ]);
        $id = $request->input('id');
        $data = DB::select('select * from subcategory inner join product_details on subcategory.sub_id=product_details.sub_id where product_details.sub_id = ?',[$id]);
        return view('productdetails',['data'=>$data]);
    }