2011-02-14 5 views
0

나는 업데이트 프로필 페이지를 만들었습니다.Yii 업데이트 프로필 페이지

은 내가 양식을 채울 컨트롤러이 있고 또한 업데이트가 처리 :

$user = User::model()->findByPk(Yii::app()->user->id); 
// Collect user input 
if (isset($_POST['User'])) { 
$user->attributes = $_POST['User']; 

if ($user->save()) { 
    echo "update successfully"; 
} 
else { 
    echo "update failed"; 
} 
} 

// View 
$this->render('user_view', array('user'=>$user,)); 

그러나이 작동하지 않습니다. $ user-> save가 true이지만 레코드가 데이터베이스에서 업데이트되지 않습니다. 또한 $ _POST [ 'User']가 업데이트 된 데이터를 반환하지만 $ user-> attributes가 저장하지 않는다는 것을 확인했습니다.

왜 그렇습니까?

+0

$ user-> name = $ _POST [ 'User'] [ 'name'];을 사용하여 수동으로 할당 할 수 있습니다. 그러나 이것은 – nuttynibbles

+0

을 업데이트 할 데이터 목록이 있다면 thaddeusmt의 대답을 확인하고 '사용자'모델을 게시 할 수 있으면 좋을 것입니다. D – ZaQ

답변

4

"대규모 할당"에 대해 "안전한 모델"속성을 설정해야합니다. 이 here에 대해 자세히 알아보십시오.

질량 특성 할당 $user->attributes은 유효성 검사 규칙이있는 변수에만 할당됩니다. 단지 "safe" validator 일지라도 name 속성에 규칙을 지정하면됩니다.

public function rules() 
{ 
    return array(
    array('name', 'safe') 
); 
} 

저는 이것이 당신이 가진 문제라고 확신합니다. 그것은 나에게 일어난 일입니다!

+0

아마도 이것이 실제로 문제가 될 수 있습니다. 시간의 무리 :) – Blizz