如果我通過redirect()
對某個視圖執行某些操作後,如何從控制器傳遞數據(如果我有獲取路由的話)?如何通過重定向將數據傳遞到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
它的工作原理和感謝您解釋爲重要數據使用隱藏輸入的風險。 (由於我的教授而陷入困境的不良習慣)。然而,與以下評論相同的事情正在發生:如果我引入了一個無效的用戶名(一個已經在數據庫中的用戶名),然後我引入了一個有效的用戶名,它將不會保存在數據庫中。我知道這是因爲它不會再在會話中擁有'user_id',我該如何解決這個問題? –
我編輯了我的答案,讓我知道它是否有效。 – Rifki
完美無瑕。謝謝。 –