注册成功

当用户注册完成,且表单信息验证通过后,我们需要做以下两个操作:

  • 将用户提交的信息存储到数据库,并重定向到其个人页面;
  • 在网页顶部位置显示注册成功的提示信息;

保存用户并重定向

app/Http/Controllers/UsersController.php

validate($request, [
            'name' => 'required|max:50',
            'email' => 'required|email|unique:users|max:255',
            'password' => 'required|confirmed|min:6'
        ]);

        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);

        return redirect()->route('users.show', [$user]);
    }
}

store 方法接受一个 Illuminate\Http\Request 实例参数,我们可以使用该参数来获得用户的所有输入数据。

获取某个字段值:

$name = $request->name;

获取用户输入的所有数据:

$data = $request->all();

用户模型 User::create() 创建成功后会返回一个用户对象,并包含新注册用户的所有信息。我们将新注册用户的所有信息赋值给变量 $user,并通过路由跳转来进行数据绑定。

redirect()->route('users.show', [$user]);

注意这里是一个『约定优于配置』的体现,此时 $user 是 User 模型对象的实例。route() 方法会自动获取 Model 的主键,也就是数据表 users 的主键 id,以上代码等同于:

redirect()->route('users.show', [$user->id]);

消息提示

在页面顶部位置显示注册成功的提示信息。

app/Http/Controllers/UsersController.php

validate($request, [
            'name' => 'required|max:50',
            'email' => 'required|email|unique:users|max:255',
            'password' => 'required|confirmed|min:6'
        ]);

        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);

        session()->flash('success', '欢迎,您将在这里开启一段新的旅程~');
        return redirect()->route('users.show', [$user]);
    }
}

由于 HTTP 协议是无状态的,所以 Laravel 提供了一种用于临时保存用户数据的方法 - 会话(Session),并附带支持多种会话后端驱动,可通过统一的 API 进行使用。

我们可以使用 session() 方法来访问会话实例。而当我们想存入一条缓存的数据,让它只在下一次的请求内有效时,则可以使用 flash 方法。flash 方法接收两个参数,第一个为会话的键,第二个为会话的值,我们可以通过下面这行代码的为会话赋值。

session()->flash('success', '欢迎,您将在这里开启一段新的旅程~');

之后我们可以使用 session()->get('success') 通过键名来取出对应会话中的数据,取出的结果为 欢迎,您将在这里开启一段新的旅程~

接下来的消息提示我们会用会话进行闪存,并分别为其设定好指定的键。danger, warning, success, info 这四个键名在 Bootstrap 分别具有不同样式展现效果,因此后面我们将使用这几个键名作为消息提示的专有设定。
现在让我们加入消息提醒视图,让会话消息在视图上进行展示。

resources/views/shared/_messages.blade.php

@foreach (['danger', 'warning', 'success', 'info'] as $msg)
  @if(session()->has($msg))
    

{{ session()->get($msg) }}

@endif @endforeach

session()->has($msg) 可用于判断会话中 $msg 键对应的值是否为空,若为空则在页面上不进行显示。最后,我们通过 session()->get($msg) 来取出对应的值并在页面上进行显示。

现在,让我们在全局通用视图中加入消息提醒视图。

resources/views/layouts/default.blade.php



  
    @yield('title', 'Sample App') - Laravel 入门教程
    
  
  
    @include('layouts._header')

    
@include('shared._messages') @yield('content') @include('layouts._footer')

当我们再次注册一个验证通过的用户时,能够看到消息提醒在页面上成功展示。

你可能感兴趣的:(注册成功)