Как я могу передавать данные с контроллера после того, как он выполнит определенные действия для просмотра через 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'));
}
ГЭТ маршрут:
Route::get('assign-username', '[email protected]');
И код запроса на пост assign-user
формы.
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
Работает безупречно. Спасибо. –