2017-10-06 4 views
0

私はroute('users.create')の形をしています。

が、私はそのcontollerでこの関数にフォームデータを送信します。検証のため

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', 

これは機能します。

しかし、first_nameの値を検証前(DBに保存する前)に変更するにはどうすればよいですか?

(また失敗した検証で、私は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

オーバーライドAppでそうFormRequest

のprepareForValidation()メソッドを参照してください\のHttp \リクエスト\パネル\ユーザ\ UserRequest:

protected function prepareForValidation() 
{ 
    if ($this->has('first_name')) 
     $this->merge(['first_name'=>'Mr '.$this->first_name]); 
} 
関連する問題