【问题标题】:how to hide id in url in laravel?如何在laravel的url中隐藏id?
【发布时间】:2021-01-06 14:53:58
【问题描述】:

我正在 Laravel 中创建电子商务网站,我想在 url 中隐藏 productdetails id。我可以在代码中更改什么请需要解决方案。

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 需要是可见的。您还应该在 {id} 之前添加一个“/”。

标签: laravel


【解决方案1】:

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

您可以通过使用表单发送发布请求来做到这一点:

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>

您可能需要设置按钮的样式,使其看起来像一个链接。

控制器变成:

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]);
    }

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

【讨论】:

  • 你好,实际上我是在点击图片,我正在获取产品详细信息,我如何使用按钮进行链接..
  • 我在你的问题中看不到图像,这应该不重要。按钮内容可以是图像或只是文本。它只是归结为造型
猜你喜欢
  • 2021-10-31
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
相关资源
最近更新 更多