LaravelとReactでユーザ情報の登録機能を作っているのですが、
バリデーションで複数のエラーに引っかかった場合、
エラーメッセージを表示する際、複数の文章が改行されずに
1行にまとめられて表示されてしまいます。
エラーメッセージにスペースや改行コードを入れたり、
{}で渡されたpropsを囲んで、Object.keysに入れてmapやforeachを使ったり、
CSSでwhite-spaceをいじったりしてみたのですが全く効果がありません。
なんとか解決する方法を教えていただければ幸いです。
React
1//このような形でエラーメッセージが渡されています 2errorMessage: 3["入力されたパスワードと確認パスワードが一致していません!", "パスワードは4文字以上で入力してく…] 40:"入力されたパスワードと確認パスワードが一致していません!" 51:"パスワードは4文字以上で入力してください" 6new entry
↓エラーメッセージを表示するComponentです
React
1import React from "react"; 2 3import "./form-input.styles.scss"; 4 5const FormInput = ({ handleChange, label, errorMessage, ...otherProps }) => ( 6 <div className="group"> 7 {label ? <label className="form-input-label">{label}</label> : null} 8 <input className="form-input" onChange={handleChange} {...otherProps} /> 9 <p className="error-messages">{errorMessage}</p> 10 </div> 11); 12 13export default FormInput;
↓FormInputのcssです
SCSS
1.group { 2 display: flex; 3 flex-direction: column; 4 align-items: center; 5 font-size: 20px; 6 7 .form-input { 8 background: none; 9 background-color: rgb(250, 245, 246); 10 width: 50vw; 11 } 12 13 .form-input-label { 14 font-weight: bold; 15 color: rgb(7, 252, 109); 16 } 17 18 .error-messages{ 19 white-space: pre-line; 20 color: rgb(248, 14, 14); 21 } 22}
使われているFormRequestです
php
1<?php 2 3namespace App\Http\Requests; 4 5use Illuminate\Foundation\Http\FormRequest; 6 7class UserStorePost extends FormRequest 8{ 9 /** 10 * Determine if the user is authorized to make this request. 11 * 12 * @return bool 13 */ 14 public function authorize() 15 { 16 //有効化 17 return true; 18 } 19 20 /** 21 * Get the validation rules that apply to the request. 22 * 23 * @return array 24 */ 25 public function rules() 26 { 27 //Validationのルールを設定 28 return [ 29 'displayName' => ['required','min:3','max:10'], 30 'email' => ['required','unique:users'], 31 'password' => ['required','confirmed','min:4','max:8'], 32 'password_confirmation' => ['required'] 33 ]; 34 } 35 36 public function messages() 37 { 38 //Validationのエラーメッセージを設定 39 return [ 40 'displayName.required' => 'ユーザー名を入力してください!', 41 'displayName.min' => 'ユーザー名は最低3文字以上です!', 42 'displayName.max' => 'ユーザー名は最高10文字までです!', 43 44 'email.required' => 'メールアドレスを入力してください!', 45 'email.unique' => 'そのメールアドレスは登録済みです!', 46 47 'password.required' => 'パスワードを入力してください', 48 'password.confirmed' => '入力されたパスワードと確認パスワードが一致していません!', 49 'password.min' => 'パスワードは4文字以上で入力してください', 50 'password.max' => 'パスワードは8文字以内で入力してください', 51 52 'password_confirmation' => '確認パスワードを入力してください!', 53 ]; 54 } 55} 56
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/29 02:59
2020/11/29 03:17