想要在Laravel的URL字段中将名称显示为参数而不是id

时间:2018-03-28 06:11:52

标签: php laravel

我不想在我的Laravel项目的网址字段中显示/route_name/{id}。而不是我希望显示/route_name/{name}并将后端中的id传递给控制器​​。

假设我有一个视图department.blade.php。现在点击菜单栏中的knee pain查看详细信息。这是我的观点代码

<a href="{{ url('/home_services_under_department/'.$data->id) }}>
   {{$data->name}}
</a>"

点击knee pain一个名为的路线。这是路线

Route::get('/home_services_under_department/{id}', 'frontendDepartmentController@home_services_under_department');

以下是home_services_under_department方法格式

public function home_services_under_department($id){}

这是我在浏览器中的网址 http://url/home_services_under_department/2

但我不想在id之后看到home_services_under_department,我想在knee-pain之后看到名称home_services_under_department作为参数,如

http://url/home_services_under_department/knee-pain 

并且还希望将id传递给控制器​​方法。

Laravel有可能吗?

4 个答案:

答案 0 :(得分:1)

您可以先在网址中传递名称,然后在控制器中使用名称和proccess检索id,并使用您想要执行的ID,然后再次返回带有名称的网址,以便它不会在网址和网址中显示前端 如果您想要获得更多安全保护,请使用适当的算法对URL中的名称进行加密/哈希并检索并处理它

答案 1 :(得分:1)

您可以传递名称,并可以从数据库中检索 ID

<强> 1。 HREF

     <a href="{{ url('/home_services_under_department/'.$data->name) }}>
         {{$data->name}}
     </a>

<强> 2。路线

     Route::get('/home_services_under_department/{name}', 
     'frontendDepartmentController@home_services_under_department');

第3。功能

      public function home_services_under_department($name){
           $data= Model_name::select('id')->where('name', $name)->first();
      }

答案 2 :(得分:0)

您应该更新您的路线并查看文件代码,如:

路线

SELECT *
FROM meeting
LEFT JOIN meeting_status ON meeting.id = meeting_status.meeting_id where(teacher_id IS NULL
OR teacher_id <> 28)

<强> department.blade.php

Route::get('/home_services_under_department/{id}', 'frontendDepartmentController@home_services_under_department')->name('homeservicedepartment');

答案 3 :(得分:0)

不,你不能。

如果你想&#34;通过&#34;您可以在网址(即&#39; GET&#39;)中输入ID,也可以发送&#39; POST&#39;并将id作为参数之一传递。当然,您无法使用简单的链接发送帖子,但您可以伪造帖子看起来像链接。

&#13;
&#13;
titles.has_key?(item)
&#13;
&#13;
&#13;