コントローラにデータを渡すにはどうすればよいのですか?を経由してビューに特定のアクションを実行したら、laravelのビューにリダイレクトされたデータを渡す方法
アプリのロジックはuser_id
でリダイレクトして、ユーザーがメールを正常に確認した後にユーザー名を選択するビューになります。
public function confirm($confirmationCode){
if(!$confirmationCode){
dd('No se encontró ningún código de verificación en la URL');
}
$user = User::where('confirmation_code', $confirmationCode)->first();
if(!$user){
dd('Lo sentimos. Este código de confirmación ya ha sido usado.');
}
$user->confirmed = 1;
$user->confirmation_code = null;
$user_id = $user->user_id;
$user->save();
return redirect('assign-username')->with(compact('user_id'));
}
GETルート:
Route::get('assign-username', '[email protected]');
そしてassign-user
フォームのPOSTリクエストのためのコード。
public function assignUsername(){
$user_id = request()->input('user_id');
$username = request()->input('username');
if(User::where('username', '=', $username)->exists()){
return redirect()->back()->withInput()->withErrors([
'username' => 'Este usuario ya se encuentra registrado. Intenta nuevamente'
]);
}else{
DB::table('user')->where('user_id', $user_id)->update(['username' => $username]);
}
}
、それが定義されていないと言う$user_id
変数にアクセスしようとしています。
ビューのコード:
@extends('layouts.master')
@section('content')
<section class="hero">
<h1><span>Ya estás casi listo.</span>Es hora de seleccionar tu nombre de usuario</h1>
<div class="form-group">
<form class="form-group" method="post" action="assign-username">
{!! csrf_field() !!}
@if($errors->has('username'))
<span class="help-block" style="color:red">
<strong>{{ $errors->first('username') }}</strong>
</span>
@endif
<input type="hidden" name="user_id" value="{{ session('user_id') }}">
<input type="text" name="username" placeholder="Escribe tu nombre de usuario">
<button type="submit" class="btn" name="send">Registrar</button>
</form>
</div>
</section>
@endsection
Laravelバージョン:5.2
重要なデータに隠れた入力を使用するリスクを説明してくれてありがとう。 (私の教授のせいで私にはまった悪い習慣)。しかし、以下のようにコメントされているのと同じことが起こっています。無効なユーザー名(既にデータベース上にあるユーザー名)を導入し、有効なユーザー名を導入するとDBに保存されません。私はそれがセッションで 'user_id'をもはや持っていないことを知っています、どうすればこれを整理できますか? –
私は自分の答えを編集しました。それが働いているかどうか教えてください。 – Rifki
完璧に動作します。ありがとうございました。 –