ここでのシナリオは、あるページから別のページに送信される変数を渡し、次のページでフォームに格納することです。したがって、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>
ルート
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);
}
暗号化方式を使用すると、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);
}
URL
のパラメーターを非表示にすることはできません。 ID
を表示したくない場合は、SLUG
を使用してみてください。 SLUG
についてご理解いただければ幸いです。そうでない場合は、ここにあります。コースのタイトルがMy new Course Titleの場合、そのスラッグはmy-new-course-titleになります。そして、それがテーブルのID
のようにniqueであることを確認してください。また、SEOにも適し、読みやすく、見栄えがします。
ここでは、URLでパラメーターを非表示にする方法はありません。パラメーター値を変換するか、暗号化するかハッシュにするかは、あなた次第です。
他の方法では、最初にセッションの値を保存してから、urlにパラメーターを定義せずにセッションから値を呼び出します。
laravelルートはURL/string/idのパターンにのみ機能するので、get動的値を書き込む必要があるため、パターンメソッドを使用して書き込み/取得する必要があります。
ありがとう。