web-dev-qa-db-ja.com

Laravel:URLパラメータを非表示にする方法は?

ここでのシナリオは、あるページから別のページに送信される変数を渡し、次のページでフォームに格納することです。したがって、URLを介して最初のページから2番目のページに変数を渡しました。しかし、URLのパラメーターを非表示にしたいと思います。どうすればいいのですか?

これが私のルートです:

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

そしてコントローラー:

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

そして最初のページこれは私が最初のページに値を送信する方法です:

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

投稿方法

ルート

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

見る

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

コントローラ

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

Getメソッド

暗号化方式を使用すると、URLに暗号化されたIDが表示されます

見る

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

コントローラ

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

URLのパラメーターを非表示にすることはできません。 IDを表示したくない場合は、SLUGを使用してみてください。 SLUGについてご理解いただければ幸いです。そうでない場合は、ここにあります。コースのタイトルがMy new Course Titleの場合、そのスラッグはmy-new-course-titleになります。そして、それがテーブルのIDのようにniqueであることを確認してください。また、SEOにも適し、読みやすく、見栄えがします。

1

ここでは、URLでパラメーターを非表示にする方法はありません。パラメーター値を変換するか、暗号化するかハッシュにするかは、あなた次第です。

他の方法では、最初にセッションの値を保存してから、urlにパラメーターを定義せずにセッションから値を呼び出します。

laravelルートはURL/string/idのパターンにのみ機能するので、get動的値を書き込む必要があるため、パターンメソッドを使用して書き込み/取得する必要があります。

ありがとう。

0
Xain Bin Kafeel