Laravel : How to hide url parameter?

风流意气都作罢 提交于 2019-11-27 16:45:45

问题


Here the scenario is I want to pass a variable which will be send from one page to another and in next page it's gonna store through a form. So I have passed the variable from first page to second page through the URL. But I want to hide the parameter in the URL. How do I do it?

Here is my route :

Route::get('/registration/{course_id}',[
   'uses'=>'AppController@getregistration',
    'as'=>'registration'
]);

And Controller :

public function getregistration($course_id)
{        
    return view('index')->with('course_id',$course_id);      
}

And first page this is how I send the value to first page:

<li> <a  href="{{route('registration',['course_id' => '1'])}}">A</a> </li>

回答1:


Post Method

Route

Route::post('/registration',['uses'=>'AppController@getregistration','as'=>'registration']);

View

{!!Form::open(array('url' => '/registration')) !!}
  {!! Form::hidden('course_id', '1') !!}
  {!! Form::submit('registration') !!}
{!! Form::close() !!}

Controller

public function getregistration(Request $request)
{   
    $course_id = $request->input('course_id');
    return view('index')->with('course_id',$course_id);      
}

Get method

use encryption method, it will show encrypted id in url

View

<li> <a  href="{{route('registration',['course_id' => Crypt::encrypt('1') ])}}">A</a> </li>

Controller

public function getregistration($course_id)
{    
  $course_id = Crypt::decrypt($course_id);    
  return view('index')->with('course_id',$course_id);      
}



回答2:


You cannot hide a parameter in URL. If you don't want to show the ID then try using SLUG. I hope you understand what is a SLUG. If you don't then here it is. If you course title is My new Course Title then its slug would be my-new-course-title. And make sure it is unique like an ID in the table. It is also good for SEO, readable and looks good.




回答3:


here is no way you hide parameter in url, rather then you convert parameter value encrypt or hash is up to you,

other-way is save value in session first, then call the value from session without define parameter in url.

because laravel route only working to pattern of url /string /id, post get. dynamic value you must be writing / getting using pattern method.

Thanks.



来源:https://stackoverflow.com/questions/39951509/laravel-how-to-hide-url-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!