2016-02-18 3 views
0

Итак, у меня есть три формы на одной странице. Один из них - изменить изображение пользователя, другое - обновить личную информацию, а последняя форма - установить новый пароль. Моя проблема здесь в том, что я получаю ошибки проверки в полях пароля и пароля, даже если я пытаюсь обновить некоторую информацию (вторая форма).Laravel 5 Несколько правил проверки формы

я создал два запроса:

UserEditRequest:

class UserEditRequest extends Request 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'firstname' => 'required', 
      'lastname' => 'required' 
     ];  
    } 
} 

UserUpdatePasswordRequest:

class UserUpdatePasswordRequest extends Request 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'password' => 'required|confirmed|min:6', 
      'password_confirmation' => 'required|min:6', 
     ];  
    } 
} 

в UserController UpdatePassword:

public function updatePassword(UserUpdatePasswordRequest $request, $id) 
{ 
    $user = User::findOrFail($id); 
    $user->password = bcrypt($request->get('password')); 
    $user->save(); 

    return redirect()->route('user.edit',$id)->with('success','Password changed.'); 
} 

postEdit где я обрабатывать личные данные и изменения аватаров:

public function postEdit(UserEditRequest $request, $id) 
{ 
    dd($request->all()); 
    $user = User::findOrFail($id); 

    if($request->get('avatar')) 
    { 
     $destinationPath = public_path() . '/avatars/' . $user->id . '/'; 
     $fileName = $user->id . '.' . $request->file('avatar')->getClientOriginalExtension(); 
     $request->file('avatar')->move($destinationPath, $fileName); 
     $user->avatar = 'avatars/' . $user->id . '/' . $fileName; 
     $user->save(); 
     return redirect()->route('user.edit',$id)->with('success','User avatar modified.'); 
    } 
    $user->fill($request->input())->save(); 

    return redirect()->route('user.edit',$id)->with('success','User details modified.'); 
} 

QUICKY мои маршруты:

Route::group(['prefix' => 'user', 'as' => 'user.'], function() { 

     Route::get('profile/{userid}', ['as' => 'edit', 'uses' => '[email protected]']); 
     Route::post('profile/{userid}', ['as' => 'edit', 'uses' => '[email protected]']); 
     Route::post('profile/{userid}', ['as' => 'updatepassword', 'uses' => '[email protected]']); 

    }); 
}); 

ответ

0

пытаются дифференцировать свои маршруты для postEdit и действия контроллера UpdatePassword

Route::post('profile/{userid}', ['as'=>'edit', 'uses'=>'[email protected]']); 
Route::post('profile/password/{userid}', ['as'=>updatepassword', 'uses'=>'[email protected]']); 

Использование того же маршрута для двух разных действий контроллера не будет работать. Я имею в виду, как вы ожидаете, что маршрутизатор определит, какое действие контроллера нужно вызвать, когда form action = '/ profile/id' method = 'post'? Следовательно, вам нужно различать маршруты. Надеюсь, вы поняли.

+0

Да, я сделал три разных маршрута, и он работает благодаря. – user3813360

+0

Рад, что это помогло. – Donkarnash

Смежные вопросы