Как ввести номер кода сессии в laravel? - PullRequest
0 голосов
/ 09 июня 2019

После регистрации перенаправьте на эту страницу.

Я хочу ввести этот код.(Конечно, номер мобильного телефона и код сохраните в базе данных и отправьте смс на мобильный телефон).

Как ввести номер кода сеанса?

Код

web.php

Route::get('/code', 'HomeController@code')->name('code');
Route::post('/send', 'HomeController@send')->name('send');

RegisterController.php

public function register(Request $request, User $user)
{
    $code = rand(10000,99999);
    $user = \App\User::create([
        'first_name' => $request->first_name,
    .
    .
    .
    .
return redirect()->route('code',['mobile'=>$request->mobile]);

HomeController.php

public function code()
{
    return view('Home.send');
}

    public function send(Request $request)
{
    $mobile = $request->session()->get('mobile');
    $user = User::whereCode($request->code)
        ->whereMobile($mobile)
        ->firstOrFail();
    if($user){
        $user->verification_code = 1;
        $user->save();
        alert()->success('ok');
        return redirect()->back();
    } else {
        alert()->error('error');
        return redirect()->back();
    }
}

send.blad, php

<form action="{{ route('send') }}" method="post">
    {{ csrf_field() }}
    <div class="form-group">
        <label for="code">Code</label>
        <input type="text" class="form-control" name="code" id="code">
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-danger" id="btn-ok">OK</button>
    </div>
</form>

Я получаю эту ошибку

404

У меня есть verification_code в users таблице.Я хочу В случае ввода истинного кода и номера мобильного телефона verification_code изменить на 1

1 Ответ

0 голосов
/ 09 июня 2019

Посмотрите на Извлечение одиночных моделей - исключений не найдено .

Метод firstOrFail извлекает первый результат запроса; однако, если результат не найден, Освещение \ База данных \ Eloquent \ ModelNotFoundException будет выброшено.

Если исключение не перехвачено, автоматически отправляется HTTP-ответ 404 назад к пользователю. Нет необходимости писать явные проверки верните 404 ответа при использовании этих методов.

Итак, вы можете попробовать поймать исключение:

try {
    $mobile = $request->session()->get('mobile');
    $user = User::whereCode($request->code)
        ->whereMobile($mobile)
        ->firstOrFail();

    $user->verification_code = 1;
    $user->save();

} catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
    return redirect()->back()->with('alert', 'error');
}

return redirect()->back()->with('success', 'ok');

Или иначе использовать first вместо firstOrFail, который вернет null, если нет записи, которая удовлетворяет условиям where:

$mobile = $request->session()->get('mobile');
$user = User::whereCode($request->code)
    ->whereMobile($mobile)
    ->first();

if(empty($user)){
    return redirect()->back()->with('alert', 'error');
} 

$user->verification_code = 1;
$user->save();
return redirect()->back()->with('success', 'ok');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...