【发布时间】:2019-09-28 11:39:12
【问题描述】:
我正在尝试使用 Laravel 6 中的 auth 内置功能。但是当我尝试注册时,页面返回相同的注册表单。当我调试时,我看到它进入了 RegisterController 中的验证器方法,而不是在 create 方法中。此外,客户端没有完成密码确认,所以如果密码不匹配,它仍然只是重新加载页面。
我真的不知道我的做法是否正确,但看起来 php artisan ui:auth 没有完全安装。
是否有可能因为我使用的是荷兰语变量名而无法正常工作?
注册控制器:
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
$returnvalue = Validator::make($data, [
'voornaam' => ['required', 'string', 'max:255'],
'achternaam' => ['required', 'string', 'max:255'],
'gezin_id' => ['int'],
'geboortedatum' => ['required', 'date'],
'adres' => ['required', 'string', 'max:255'],
'postcode' => ['required', 'string', 'max:8'],
'gemeente' => ['required', 'string', 'max:255'],
'land' => ['required', 'string', 'max:255'],
'gsm' => ['required', 'string', 'max:12'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
return ($returnvalue);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
dd(request()->all());
return User::create([
'voornaam' => $data['voornaam'],
'achternaam' => $data['achternaam'],
'geboortedatum' => $data['geboortedatum'],
'adres' => $data['adres'],
'postcode' => $data['postcode'],
'gemeente' => $data['gemeente'],
'land' => $data['land'],
'gsm' => $data['gsm'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
register.blade.php
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Registreer') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('register') }}">
@csrf
@if($errors->any())
<div class="row collapse">
<ul class="alert-box warning radius">
@foreach($errors->all() as $error)
<li> {{ $error }} </li>
@endforeach
</ul>
</div>
@endif
<div class="form-group row">
<label for="voornaam"
class="col-md-4 col-form-label text-md-right">{{ __('Voornaam') }}</label>
<div class="col-md-6">
<input id="voornaam" type="text"
class="form-control @error('voornaam') is-invalid @enderror" name="voornaam"
value="{{ old('voornaam') }}" required autocomplete="voornaam" autofocus>
@error('voornaam')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
[...]
<div class="form-group row">
<label for="password-confirm"
class="col-md-4 col-form-label text-md-right">{{ __('Bevestig wachtwoord') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control"
name="password_confirmation" required autocomplete="new-password">
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Registreer') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
更新
验证器值返回:
Validator {#282 ▼
#translator: Translator {#280 ▶}
#container: Application {#2 ▶}
#presenceVerifier: DatabasePresenceVerifier {#281 ▶}
#failedRules: []
#messages: null
#data: array:12 [▶]
#initialRules: array:11 [▶]
#rules: array:11 [▶]
#currentRule: null
#implicitAttributes: []
#distinctValues: []
#after: []
+customMessages: []
+fallbackMessages: []
+customAttributes: []
+customValues: []
+extensions: []
+replacers: []
#fileRules: array:9 [▶]
#implicitRules: array:10 [▶]
#dependentRules: array:18 [▶]
#sizeRules: array:8 [▶]
#numericRules: array:2 [▶]
}
那么,看起来没有验证错误?
【问题讨论】:
-
尝试
composer require laravel/ui然后php artisan ui vue --auth -
它与荷兰语无关,它们只是变量名
-
我试过了,还是同样的问题。
-
有没有可以看到
Auth::routes();的地方?我认为 '/register' 路由只进入验证器方法。这可能吗?