2017-10-06 4 views
0

route('users.create')에 양식이 있습니다.

가 나는 그것의 콘트롤이 함수에 양식 데이터를 보내 검증을위한

public function store(UserRequest $request) 
{ 

    return redirect(route('users.create')); 
} 

내가

App에서 클래스를 생성 \ HTTP를 \는 \ 패널 \ 사용자를 요청 \ UserRequest;

class UserRequest extends FormRequest 
{ 
    public function rules() 
    { 
     if($this->method() == 'POST') { 
      return [ 
       'first_name' => 'required|max:250', 

작동합니다.

하지만 유효성 검사 전에 (그리고 DB에 저장하기 전에) first_name 값을 어떻게 변경할 수 있습니까?

(또한 실패한 유효성 검사, 나는

내가 이것을 시도 old('first_name')

업데이트에 새로운 데이터를 보려면 :

public function rules() 
    { 
    $input = $this->all(); 


    $input['first_name'] = 'Mr '.$request->first_name; 
    $this->replace($input); 

    if($this->method() == 'POST') { 

그것은 if($this->method() == 'POST') { 전에 작동하지만, 그것은에 적용되지 않았습니다 유효성 확인 또는 old() 기능

답변

0

컨트롤러에서 유효성 검사를하고 있습니까? 당신이 그것을 검증하고 나중에 DB 물건을하기 전에 당신이 바꿀 수있는 것보다.

public function store(Request $request) 
{ 
    $request->first_name = 'Mr '.$request->first_name; 

    Validator::make($request->all(), [ 
     'first_name' => 'required|max:250', 
    ])->validate(); 

    // ToDo save to DB 

    return redirect(route('users.create')); 
} 

https://laravel.com/docs/5.5/validation

+0

그것을 아닌가 내 방법으로 할 수 있을까? 내 업데이트를 참조하십시오. – Maria

0

재정의 앱에 따라서 FormRequest

의 prepareForValidation() 메소드를 참조 \ HTTP를 \는 요청 \ 패널 \ 사용자 \ UserRequest :

protected function prepareForValidation() 
{ 
    if ($this->has('first_name')) 
     $this->merge(['first_name'=>'Mr '.$this->first_name]); 
}