2014-02-10 2 views
0

레코드를 업데이트하는 데 문제가 있습니다. 나는 사용자가 등록 할 수있는 페이지가 있는데, 이것은 완벽하게 작동하며 전자 메일, 사용자 이름, 암호 및 암호 확인의 4 가지 필드가 있습니다. 이것은 간단한 등록 페이지이며 성명 및 국가와 같이 채울 내용이 많아서 방문자를 끄고 싶지 않으므로이 두 필드는 "프로필 업데이트"페이지에서 업데이트 할 수 있습니다. 프로필 페이지는 영역으로 구분되며 기본 영역은이 두 필드 만 업데이트 할 수있는 단일 양식이므로 사용자 이름, 전자 메일, 암호 필드는 여기에 표시되지 않으며 전체 이름 및 국가 만 가능합니다.Laravel 레코드 업데이트

컨트롤러 프로필 업데이트 코드를

$user = User::find($id); 

    $user->fullname = Input::get('fullname'); 
    $user->country = Input::get('country'); 


    if (!$user->save()) 
    { 

     return Redirect::to('edit-profile')->withInput()->withErrors($user->errors()); 

    } else { 


     return Redirect::to('edit-profile')->withMessage('Profile successfully updated!'); 

    }  

내 사용자 모델 규칙. 나는 열렬히 노력하고 있습니다 :

public static $rules = array(
    'username' => 'required|between:3,20|unique:users|alpha_dash', 
    'email' => 'required|email|unique:users', 
    'password' => 'required|min:5|confirmed', 
    'password_confirmation' => 'min:5', 
    'fullname' => 'between:5,50', 
    'country' => 'between:3,50' 
); 

"비밀번호가 일치하지 않습니다."라는 오류 메시지가 반환됩니다. 따라서 Laravel이 쿼리에 암호 필드를 추가하고 암호가 일치하는지 확인하려고 시도하는 것 같습니다. 나는 별도의 모델이나이를위한 별도의 규칙을 만들고 싶지 않다. 이 문제를 어떻게 해결할 수 있습니까? 당신은 당신이 그것을 표시하는 경우 테스트 할 수있는 암호를 표시하지 않을 때 그것이 작동되도록하려면

답변

1

후, 컨트롤러, 그것을 필수 필드를합니다

if ($user->exists){ 
    $user::$rules['password'] = (Input::get('password')) ? 'required|min:5|confirmed' : ''; 
    $user::$rules['password_confirmation'] = (Input::get('password')) ? 'required' : ''; 
} 
$user->save(); 
+0

을 나는 또한 다른 규칙 때를 갖는 본 적이 모델을 생성하거나 업데이트하는 작업도 가능합니다. – marcanuy

+1

이 작업은 해킹과 비슷하지만 하나의 규칙 집합을 사용하는 목적을 상쇄합니다. 고마워요. 매력처럼 작동합니다! –