[Laravel] 장착 인증 기능을 사용자 정의 (사용자 등록시 항목 늘리기)
하고 싶은 일
Laravel에 처음부터 준비되어 있는 로그인 기능을 자유롭게 커스터마이즈 할 수 있게 되고 싶다.
이번에는 사용자 등록시 등록 항목을 늘리고 싶습니다.
【기본 사용자 등록 화면】
이름, 이메일 주소, 비밀번호를 등록할 수 있습니다.
환경
CentOS: 7.4
Apache: 2.4
MySQL: 5.7
PHP: 7.2
Laravel: 5.6
아래 준비
터미널에서 다음 두 가지를 치십시오.
php artisan make:auth
이제 인증 관련 루트와 뷰를 한 번에 만들어 줍니다.
php artisan migrate
이것으로 Laravel 표준 장비의 Users 테이블을 만들어 줍니다.
테이블에 새 열(열) 추가
이번에는 Users 테이블에 성별과 연령 항목을 늘려보고 싶습니다.
우선 마이그레이션 파일을 작성.
명령을 두드리십시오.
php artisan make:migration add_column_to_users_table
방금 만든 마이그레이션 파일을 편집합니다.
public function up()
{
Schema::table('users', function(Blueprint $table) {
$table->string('gender');
$table->integer('age');
});
}
마지막으로 마이그레이션 파일을 실행합니다.
php artisan migrate
이제 users 테이블에 gender 와 age 의 컬럼이 추가되었는지 생각합니다.
뷰 편집
이런 식으로 Gender와 Age 입력란을 추가합니다.
처음부터 준비되어 있는 Name 등의 폼 부분을 복사하여 내용을 다시 씁니다.
register.blade.html<!-- 省略 -->
<!-- 性別の入力欄 -->
<div class="form-group row">
<label for="gender" class="col-md-4 col-form-label text-md-right">Gender</label>
<div class="col-md-6" style="padding-top: 8px">
<input id="gender-m" type="radio" name="gender" value="male">
<label for="gender-m">Male</label>
<input id="gender-f" type="radio" name="gender" value="female">
<label for="gender-f">Female</label>
@if ($errors->has('gender'))
<span class="invalid-feedback">
<strong>{{ $errors->first('gender') }}</strong>
</span>
@endif
</div>
</div>
<!-- 年齢の入力欄 -->
<div class="form-group row">
<label for="age" class="col-md-4 col-form-label text-md-right">Age</label>
<div class="col-md-6">
<input id="age" type="number" min="1" class="form-control{{ $errors->has('age') ? ' is-invalid' : '' }}" name="age" value="{{ old('age') }}" required>
@if ($errors->has('age'))
<span class="invalid-feedback">
<strong>{{ $errors->first('age') }}</strong>
</span>
@endif
</div>
</div>
<!-- 省略 -->
모델 편집
컨트롤러 편집에 들어가기 전에 조금 모델을 편집합니다.
User 모델의 $fillable
에 앞서 추가한 두 항목을 추가합니다.
User.phpprotected $fillable = [
'name', 'gender', 'age', 'email', 'password',
];
DB에 등록할 수 있도록 허용하려면 화이트리스트$fillable
에 항목을 추가해야 합니다.
자세하게 알고 싶은 분은 이하의 사이트가 참고가 될까 생각합니다.
참고 사이트
컨트롤러 편집
밸리데이션
추가한 2항목의 밸리데이션을 설정합니다.
여기 편의 설정은 자유롭게 가 주시면 좋겠습니다.
RegisterController.phpprotected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'gender' => 'required',
'age' => 'required|integer',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
DB에 저장
특히 아무것도 생각하지 않고 gender와 age를 등록할 수 있도록 추가합시다.
RegisterController.phpprotected function create(array $data)
{
return User::create([
'name' => $data['name'],
'gender' => $data['gender'],
'age' => $data['age'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
사용자 등록하기
항목을 채우고 힘내.
성공적으로 로그인할 수 있었습니다.
다음으로 밸리데이션 기능을 확인하기 위해서, 성별을 일부러 미입력으로 등록해 보겠습니다.
힘들다.
어쨌든 DB에서 시작되었지만 오류 메시지가 표시되지 않습니다 ....$errors
내용을 확인하면 확실히 오류 메시지가 토출됩니다.
"The gender field is required."
HTML을 살펴보면 오류 메시지를 둘러싼 태그가 왜인지display: none;
입니다.
원인은 몰랐습니다만, 우선 <span style="display:inline;">
라고 인라인 지정해 주었더니 정상적으로 에러 메세지가 표시되었습니다.
우~응, 원인 알 사람이 있으면 가르쳐 주시면 도움이 됩니다_(._.)_
오늘은 여기까지.
Reference
이 문제에 관하여([Laravel] 장착 인증 기능을 사용자 정의 (사용자 등록시 항목 늘리기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u-dai/items/0c2e1b0f52c6a93fea8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
CentOS: 7.4
Apache: 2.4
MySQL: 5.7
PHP: 7.2
Laravel: 5.6
아래 준비
터미널에서 다음 두 가지를 치십시오.
php artisan make:auth
이제 인증 관련 루트와 뷰를 한 번에 만들어 줍니다.
php artisan migrate
이것으로 Laravel 표준 장비의 Users 테이블을 만들어 줍니다.
테이블에 새 열(열) 추가
이번에는 Users 테이블에 성별과 연령 항목을 늘려보고 싶습니다.
우선 마이그레이션 파일을 작성.
명령을 두드리십시오.
php artisan make:migration add_column_to_users_table
방금 만든 마이그레이션 파일을 편집합니다.
public function up()
{
Schema::table('users', function(Blueprint $table) {
$table->string('gender');
$table->integer('age');
});
}
마지막으로 마이그레이션 파일을 실행합니다.
php artisan migrate
이제 users 테이블에 gender 와 age 의 컬럼이 추가되었는지 생각합니다.
뷰 편집
이런 식으로 Gender와 Age 입력란을 추가합니다.
처음부터 준비되어 있는 Name 등의 폼 부분을 복사하여 내용을 다시 씁니다.
register.blade.html<!-- 省略 -->
<!-- 性別の入力欄 -->
<div class="form-group row">
<label for="gender" class="col-md-4 col-form-label text-md-right">Gender</label>
<div class="col-md-6" style="padding-top: 8px">
<input id="gender-m" type="radio" name="gender" value="male">
<label for="gender-m">Male</label>
<input id="gender-f" type="radio" name="gender" value="female">
<label for="gender-f">Female</label>
@if ($errors->has('gender'))
<span class="invalid-feedback">
<strong>{{ $errors->first('gender') }}</strong>
</span>
@endif
</div>
</div>
<!-- 年齢の入力欄 -->
<div class="form-group row">
<label for="age" class="col-md-4 col-form-label text-md-right">Age</label>
<div class="col-md-6">
<input id="age" type="number" min="1" class="form-control{{ $errors->has('age') ? ' is-invalid' : '' }}" name="age" value="{{ old('age') }}" required>
@if ($errors->has('age'))
<span class="invalid-feedback">
<strong>{{ $errors->first('age') }}</strong>
</span>
@endif
</div>
</div>
<!-- 省略 -->
모델 편집
컨트롤러 편집에 들어가기 전에 조금 모델을 편집합니다.
User 모델의 $fillable
에 앞서 추가한 두 항목을 추가합니다.
User.phpprotected $fillable = [
'name', 'gender', 'age', 'email', 'password',
];
DB에 등록할 수 있도록 허용하려면 화이트리스트$fillable
에 항목을 추가해야 합니다.
자세하게 알고 싶은 분은 이하의 사이트가 참고가 될까 생각합니다.
참고 사이트
컨트롤러 편집
밸리데이션
추가한 2항목의 밸리데이션을 설정합니다.
여기 편의 설정은 자유롭게 가 주시면 좋겠습니다.
RegisterController.phpprotected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'gender' => 'required',
'age' => 'required|integer',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
DB에 저장
특히 아무것도 생각하지 않고 gender와 age를 등록할 수 있도록 추가합시다.
RegisterController.phpprotected function create(array $data)
{
return User::create([
'name' => $data['name'],
'gender' => $data['gender'],
'age' => $data['age'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
사용자 등록하기
항목을 채우고 힘내.
성공적으로 로그인할 수 있었습니다.
다음으로 밸리데이션 기능을 확인하기 위해서, 성별을 일부러 미입력으로 등록해 보겠습니다.
힘들다.
어쨌든 DB에서 시작되었지만 오류 메시지가 표시되지 않습니다 ....$errors
내용을 확인하면 확실히 오류 메시지가 토출됩니다.
"The gender field is required."
HTML을 살펴보면 오류 메시지를 둘러싼 태그가 왜인지display: none;
입니다.
원인은 몰랐습니다만, 우선 <span style="display:inline;">
라고 인라인 지정해 주었더니 정상적으로 에러 메세지가 표시되었습니다.
우~응, 원인 알 사람이 있으면 가르쳐 주시면 도움이 됩니다_(._.)_
오늘은 여기까지.
Reference
이 문제에 관하여([Laravel] 장착 인증 기능을 사용자 정의 (사용자 등록시 항목 늘리기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u-dai/items/0c2e1b0f52c6a93fea8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
php artisan make:auth
php artisan migrate
이번에는 Users 테이블에 성별과 연령 항목을 늘려보고 싶습니다.
우선 마이그레이션 파일을 작성.
명령을 두드리십시오.
php artisan make:migration add_column_to_users_table
방금 만든 마이그레이션 파일을 편집합니다.
public function up()
{
Schema::table('users', function(Blueprint $table) {
$table->string('gender');
$table->integer('age');
});
}
마지막으로 마이그레이션 파일을 실행합니다.
php artisan migrate
이제 users 테이블에 gender 와 age 의 컬럼이 추가되었는지 생각합니다.
뷰 편집
이런 식으로 Gender와 Age 입력란을 추가합니다.
처음부터 준비되어 있는 Name 등의 폼 부분을 복사하여 내용을 다시 씁니다.
register.blade.html<!-- 省略 -->
<!-- 性別の入力欄 -->
<div class="form-group row">
<label for="gender" class="col-md-4 col-form-label text-md-right">Gender</label>
<div class="col-md-6" style="padding-top: 8px">
<input id="gender-m" type="radio" name="gender" value="male">
<label for="gender-m">Male</label>
<input id="gender-f" type="radio" name="gender" value="female">
<label for="gender-f">Female</label>
@if ($errors->has('gender'))
<span class="invalid-feedback">
<strong>{{ $errors->first('gender') }}</strong>
</span>
@endif
</div>
</div>
<!-- 年齢の入力欄 -->
<div class="form-group row">
<label for="age" class="col-md-4 col-form-label text-md-right">Age</label>
<div class="col-md-6">
<input id="age" type="number" min="1" class="form-control{{ $errors->has('age') ? ' is-invalid' : '' }}" name="age" value="{{ old('age') }}" required>
@if ($errors->has('age'))
<span class="invalid-feedback">
<strong>{{ $errors->first('age') }}</strong>
</span>
@endif
</div>
</div>
<!-- 省略 -->
모델 편집
컨트롤러 편집에 들어가기 전에 조금 모델을 편집합니다.
User 모델의 $fillable
에 앞서 추가한 두 항목을 추가합니다.
User.phpprotected $fillable = [
'name', 'gender', 'age', 'email', 'password',
];
DB에 등록할 수 있도록 허용하려면 화이트리스트$fillable
에 항목을 추가해야 합니다.
자세하게 알고 싶은 분은 이하의 사이트가 참고가 될까 생각합니다.
참고 사이트
컨트롤러 편집
밸리데이션
추가한 2항목의 밸리데이션을 설정합니다.
여기 편의 설정은 자유롭게 가 주시면 좋겠습니다.
RegisterController.phpprotected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'gender' => 'required',
'age' => 'required|integer',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
DB에 저장
특히 아무것도 생각하지 않고 gender와 age를 등록할 수 있도록 추가합시다.
RegisterController.phpprotected function create(array $data)
{
return User::create([
'name' => $data['name'],
'gender' => $data['gender'],
'age' => $data['age'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
사용자 등록하기
항목을 채우고 힘내.
성공적으로 로그인할 수 있었습니다.
다음으로 밸리데이션 기능을 확인하기 위해서, 성별을 일부러 미입력으로 등록해 보겠습니다.
힘들다.
어쨌든 DB에서 시작되었지만 오류 메시지가 표시되지 않습니다 ....$errors
내용을 확인하면 확실히 오류 메시지가 토출됩니다.
"The gender field is required."
HTML을 살펴보면 오류 메시지를 둘러싼 태그가 왜인지display: none;
입니다.
원인은 몰랐습니다만, 우선 <span style="display:inline;">
라고 인라인 지정해 주었더니 정상적으로 에러 메세지가 표시되었습니다.
우~응, 원인 알 사람이 있으면 가르쳐 주시면 도움이 됩니다_(._.)_
오늘은 여기까지.
Reference
이 문제에 관하여([Laravel] 장착 인증 기능을 사용자 정의 (사용자 등록시 항목 늘리기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u-dai/items/0c2e1b0f52c6a93fea8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<!-- 省略 -->
<!-- 性別の入力欄 -->
<div class="form-group row">
<label for="gender" class="col-md-4 col-form-label text-md-right">Gender</label>
<div class="col-md-6" style="padding-top: 8px">
<input id="gender-m" type="radio" name="gender" value="male">
<label for="gender-m">Male</label>
<input id="gender-f" type="radio" name="gender" value="female">
<label for="gender-f">Female</label>
@if ($errors->has('gender'))
<span class="invalid-feedback">
<strong>{{ $errors->first('gender') }}</strong>
</span>
@endif
</div>
</div>
<!-- 年齢の入力欄 -->
<div class="form-group row">
<label for="age" class="col-md-4 col-form-label text-md-right">Age</label>
<div class="col-md-6">
<input id="age" type="number" min="1" class="form-control{{ $errors->has('age') ? ' is-invalid' : '' }}" name="age" value="{{ old('age') }}" required>
@if ($errors->has('age'))
<span class="invalid-feedback">
<strong>{{ $errors->first('age') }}</strong>
</span>
@endif
</div>
</div>
<!-- 省略 -->
컨트롤러 편집에 들어가기 전에 조금 모델을 편집합니다.
User 모델의
$fillable
에 앞서 추가한 두 항목을 추가합니다.User.php
protected $fillable = [
'name', 'gender', 'age', 'email', 'password',
];
DB에 등록할 수 있도록 허용하려면 화이트리스트
$fillable
에 항목을 추가해야 합니다.자세하게 알고 싶은 분은 이하의 사이트가 참고가 될까 생각합니다.
참고 사이트
컨트롤러 편집
밸리데이션
추가한 2항목의 밸리데이션을 설정합니다.
여기 편의 설정은 자유롭게 가 주시면 좋겠습니다.
RegisterController.phpprotected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'gender' => 'required',
'age' => 'required|integer',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
DB에 저장
특히 아무것도 생각하지 않고 gender와 age를 등록할 수 있도록 추가합시다.
RegisterController.phpprotected function create(array $data)
{
return User::create([
'name' => $data['name'],
'gender' => $data['gender'],
'age' => $data['age'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
사용자 등록하기
항목을 채우고 힘내.
성공적으로 로그인할 수 있었습니다.
다음으로 밸리데이션 기능을 확인하기 위해서, 성별을 일부러 미입력으로 등록해 보겠습니다.
힘들다.
어쨌든 DB에서 시작되었지만 오류 메시지가 표시되지 않습니다 ....$errors
내용을 확인하면 확실히 오류 메시지가 토출됩니다.
"The gender field is required."
HTML을 살펴보면 오류 메시지를 둘러싼 태그가 왜인지display: none;
입니다.
원인은 몰랐습니다만, 우선 <span style="display:inline;">
라고 인라인 지정해 주었더니 정상적으로 에러 메세지가 표시되었습니다.
우~응, 원인 알 사람이 있으면 가르쳐 주시면 도움이 됩니다_(._.)_
오늘은 여기까지.
Reference
이 문제에 관하여([Laravel] 장착 인증 기능을 사용자 정의 (사용자 등록시 항목 늘리기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/u-dai/items/0c2e1b0f52c6a93fea8a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'gender' => 'required',
'age' => 'required|integer',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'gender' => $data['gender'],
'age' => $data['age'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
항목을 채우고 힘내.
성공적으로 로그인할 수 있었습니다.
다음으로 밸리데이션 기능을 확인하기 위해서, 성별을 일부러 미입력으로 등록해 보겠습니다.
힘들다.
어쨌든 DB에서 시작되었지만 오류 메시지가 표시되지 않습니다 ....
$errors
내용을 확인하면 확실히 오류 메시지가 토출됩니다."The gender field is required."
HTML을 살펴보면 오류 메시지를 둘러싼 태그가 왜인지
display: none;
입니다.원인은 몰랐습니다만, 우선
<span style="display:inline;">
라고 인라인 지정해 주었더니 정상적으로 에러 메세지가 표시되었습니다.우~응, 원인 알 사람이 있으면 가르쳐 주시면 도움이 됩니다_(._.)_
오늘은 여기까지.
Reference
이 문제에 관하여([Laravel] 장착 인증 기능을 사용자 정의 (사용자 등록시 항목 늘리기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/u-dai/items/0c2e1b0f52c6a93fea8a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)