vue-cli vuelidateバックエンドデータ検証に基づく登録
6105 ワード
紹介する
具体的なコードも
バックエンドapiおよびデータ準備
フロントエンドの要求に対して
まず
Modelを生成したら、フィールド情報を定義します.
また、対応するFactoryを作成してテストデータを生成することもできます.
モデル工場を作成したら、いくつかのテストデータプロジェクト端末を生成してみましょう.
テストデータを用意しましたもちろん登録後のデータも使えます
登録を開始する前に、対応する
私の
プロジェクト端末で実行:
コントローラを生成したら、ルーティング方法を定義します.
これにより、登録されたバックエンド処理ロジックを完了できます.
私たちの
私の具体的な
もちろん、これはフィールド検証のバックエンドを必要とする検証ルーティング方法にすぎません.
ここでは
ユーザー名の検証:
もちろんメールボックスのチェックも同じです
これらが完成したらフロントエンドに行って登録方法を完成するのは悪くないはずですが、実はそうではありません.
登録の前提は各フィールドが要求に合致することであるため、この論理を登録することができる.
登録ボタンにメソッドを追加します.
ここの
これで最終的な登録ロジックは
ここでの
登録プロセス全体を見てみましょうユーザ登録 データ検査 ログインプロセスの基本的なロジック、つまり私たちの通常のログインは、このようにデータの校正とデータの戻りにほかならない.
資料リンク vuelidate URL gistアドレス1 gistアドレス2
vuelidate
の基本的な検証を実装した後、プロジェクトの登録ログインと検証プロセスを実装する必要があります.具体的なコードも
gist
に載せますバックエンドapiおよびデータ準備
フロントエンドの要求に対して
laravel
をバックエンドプロジェクトとするには、データの処理と対応するフィードバックが必要である.まず
User Model
をプロジェクト端末に作成することができます.$ php artisan make:model User -m
Modelを生成したら、フィールド情報を定義します.
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->string('avatar');//
$table->string('confirm_code',64);// code
$table->smallInteger('is_confirmed')->default(0);//
$table->integer('followers_count')->default(0);
$table->integer('followings_count')->default(0);
$table->rememberToken();
$table->timestamps();
});
}
また、対応するFactoryを作成してテストデータを生成することもできます.
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'avatar' => $faker->imageUrl(256, 256),
'confirm_code' => str_random(48),
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
モデル工場を作成したら、いくつかのテストデータプロジェクト端末を生成してみましょう.
$ php artisan tinker;
$ namespace App;
$ factory(User::class,4)->create()
テストデータを用意しましたもちろん登録後のデータも使えます
登録を開始する前に、対応する
Controller
を生成します.私の
laravel
バックエンドプロジェクトは5.4で、5.4にコントローラとモデルのバインドが追加されました.プロジェクト端末で実行:
$ php artisan make:controller UserController --model=User
コントローラを生成したら、ルーティング方法を定義します.
Route::group(['prefix'=>'user','middleware'=>['api','cors']], function () {
Route::post('/register','UserController@store');
});
UserController
の具体的な論理は通常の登録論理です.public function store(Request $request)
{
$data = [
'avatar' => '/images/avatar/default.png',
'confirm_code' => str_random(48),
];
$user = User::create(array_merge($request->get('user'),$data));
return json_encode(["user_id"=>$user->id,"status"=>"success"]);
}
これにより、登録されたバックエンド処理ロジックを完了できます.
vue
バックエンドapi
データに基づくデータ検証私たちの
template
の内容は基本的にそのような判断方法ですが、ここではフィールドの一意性についてユーザー名とメールボックスについて私の具体的な
validations
はこうですvalidations: {
newUser:{
name: {
required,
minLength: minLength(4),
async isUnique (value) {
if (value === '') return true
const response = await fetch(`http://localhost:8000/api/unique/name/${value}`)
return Boolean(await response.json())
}
},
email: {
required,
email,
async isUnique (value) {
if (value === '') return true
const response = await fetch(`http://localhost:8000/api/unique/email/${value}`)
return Boolean(await response.json())
}
},
password: {
required,
minLength: minLength(6)
},
confirm_pwd: {
required,
sameAsPassword: sameAs('password')
}
}
},
もちろん、これはフィールド検証のバックエンドを必要とする検証ルーティング方法にすぎません.
Route::group(['prefix'=>'unique','middleware'=>['api','cors']], function () {
Route::get('/name/{value}','ValidateController@ValidateName');
Route::get('/email/{value}','ValidateController@ValidateEmail');
});
ここでは
Controller
を単独で生成して方法論理を実現しましたユーザー名の検証:
public function ValidateName($name)
{
$res = User::where("name",$name)->count();
if($res){
return response()->json(false);
}
return response()->json(true);
}
もちろんメールボックスのチェックも同じです
これらが完成したらフロントエンドに行って登録方法を完成するのは悪くないはずですが、実はそうではありません.
登録の前提は各フィールドが要求に合致することであるため、この論理を登録することができる.
登録ボタンにメソッドを追加します.
ここの
$v.newUser
は実はすべての検査データの集合です.私のdata
はこのように宣言されています. data(){
return{
newUser: {
name:'',
email:'',
password:'',
confirm_pwd:''
},
}
},
これで最終的な登録ロジックは
register function
に入れられましたregister:function(value){
value.$touch();//
if(!value.$error){
this.axios.post('http://localhost:8000/api/user/register',{user:this.newUser}).then(response => {
console.log("data = "+response.data.status)
})
}
}
ここでの
value.$error
は、全てのフィールドについての$error
またはその結果、全てのフィールドについての$error
がfalse
である場合のみ、検査により次の登録を行うことができるvalue.$touch()
は実際に実行された設定であり、$dirty
はtrue
である.これらはドキュメントにも紹介されている.登録プロセス全体を見てみましょう
jason
のユーザーを登録しました資料リンク