如何在laravel中输入会话代码?

How to enter session code number in laravel?

注册后重定向到此页面。

我要输入此代码。 (当然手机号码和代码保存在数据库中并发送短信到手机)。

如何输入会话代码?

Code

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

我在 users table 中有 verification_code。我要在输入真实代码和手机号码的情况下,verification_code 更改为 1

看看Retrieving Single Models - Not Found Exceptions

The firstOrFail method will retrieve the first result of the query; however, if no result is found, a Illuminate\Database\Eloquent\ModelNotFoundException will be thrown.

If the exception is not caught, a 404 HTTP response is automatically sent back to the user. It is not necessary to write explicit checks to return 404 responses when using these methods.

因此,您可以尝试捕获异常:

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,如果没有满足where条件的记录,会returnnull

$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');