首页 > 解决方案 > 在 Laravel 8 中自定义 Jetstream 注册页面验证错误消息

问题描述

我在 laravel 8 中使用默认的 jetstream 注册页面:

 @if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
  @endif


          <div class="container d-flex flex-column justify-content-between vh-100">
          <div class="row justify-content-center mt-5">
            <div class="col-xl-5 col-lg-6 col-md-10">
              <div class="card">
                <div class="card-header bg-primary">
                  <div class="app-brand">
                    <a href="/index.html">
                      <svg class="brand-icon" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" width="30"
                        height="33" viewBox="0 0 30 33">
                        <g fill="none" fill-rule="evenodd">
                          <path class="logo-fill-blue" fill="#7DBCFF" d="M0 4v25l8 4V0zM22 4v25l8 4V0z" />
                          <path class="logo-fill-white" fill="#FFF" d="M11 4v25l8 4V0z" />
                        </g>
                      </svg>
                      <span class="brand-name">Sleek Dashboard</span>
                    </a>
                  </div>
                </div>
                <div class="card-body p-5">
                  <h4 class="text-dark mb-5">Sign Up</h4>
                  <form method="POST" action="{{ route('register') }}">
                    @csrf
        
                    <div class="row">
                      <div class="form-group col-md-12 mb-4">
                        <input type="text" name="name" :value="old('name')" required autofocus autocomplete="name" class="form-control input-lg" id="name" aria-describedby="nameHelp" placeholder="Name">
                        
                        @if ($errors->has('name'))
                        <span class="invalid-feedback">
                            <strong>{{ $errors->first('name') }}</strong>
                        </span>
                       @endif


                      </div>
                      <div class="form-group col-md-12 mb-4">
                        <input type="email" name="email" :value="old('email')" required class="form-control input-lg" id="email" aria-describedby="emailHelp" placeholder="Email">
                      </div>
                      <div class="form-group col-md-12 ">
                        <input type="password" name="password" required autocomplete="new-password" class="form-control input-lg" id="password" placeholder="Password">
                      </div>
                      <div class="form-group col-md-12 ">
                        <input type="password" name="password_confirmation" required autocomplete="new-password" class="form-control input-lg" id="cpassword" placeholder="Confirm Password">
                      </div>
                      <div class="col-md-12">

                        <input type="checkbox" name="terms" value="true" {{ !old('terms') ?: 'checked' }}>
                        <label>Do you agree to Terms & Conditions</label><br/><br/>


                        <button type="submit" class="btn btn-lg btn-primary btn-block mb-4">Sign Up</button>
                        <p>Already have an account?
                          <a class="text-blue" href="{{ route('login') }}">Sign in</a>
                        </p>
                      </div>
                    </div>
                  </form>

                </div>
              </div>
            </div>
          </div>

我想知道当验证措施发生时如何自定义这些错误消息?

在此处输入图像描述

我应该编辑哪个页面?我经历了,config/auth.php但我没有看到任何要编辑的东西。

还访问了模型,没有什么可以检查的。

请帮忙!

标签: phplaraveljetstream

解决方案


如果您正在寻找自定义验证错误消息,那么您可以将其更改为App\Http\Controllers\Auth\RegisterController

protected function validator(array $data)
    {
        return Validator::make($data, [
            'username' => ['required', 'string', 'max:255', 'unique:users'],
            'first_name' => ['required', 'string', 'max:255'],
            'last_name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:6', 'confirmed'],
        ],[
            'username.required'=>'custom message',
            'username.string'=>'custom message',
            'username.max'=>'custom message',
            'username.unique'=>'custom message',
        ]);
    }

App\Actions\Fortify\CreateNewUser

public function create(array $input)
    {
       Validator::make($input, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => $this->passwordRules(),
        'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
    ],,[
        'name.required'=>'Name is required',
        'email.required'=>'Email is required',
        'phone.required'=>'Phone is required',
    ])->validate();

        return User::create([
            'name' => $input['name'],
            'email' => $input['email'],
            'password' => Hash::make($input['password']),
        ]);
    }

推荐阅读