如何在laravel的url中隐藏id?
我正在创建一个电子商务网站在拉威尔,我想隐藏在url的产品详细信息id。我可以在plz需要解决方案的代码中更改什么 Web.php如何在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
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]);
}