2011-10-27 4 views
0

나는 cakePHP를 배우기 시작했고 지금 다음과 같은 문제에 직면하고 있습니다. 내 사용자가 자신의 프로필 (DB에있는 정보)을 변경하는 것을 어떻게 허용 할 수 있습니까?CakePHP 및 사용자 프로필 변경

이것은 내 모델입니다. - http://bin.cakephp.org/view/798927304 누군가가 등록하려고 시도 할 때 이러한 유효성 확인을 사용합니다. 이것은 내 프로필 편집 방법입니다. http://bin.cakephp.org/view/841227800

먼저이 프로필을 편집 할 권한 (사용자가 소유 한 프로필)을 가지고 있는지 확인합니다. 다음 원하는 ID를 얻고 요청 -> 데이터를 저장하려고 ...하지만 불행히도 성공하지. - 변경 이메일 (그들은 새 이메일을 추가하는 경우) - 변경 사회적 프로파일합니다 (추가하는 경우) : 내가 만들고 싶어 유일한 일이>http://bin.cakephp.org/view/1798312426

-

그리고이 마지막 내이다 - 비밀번호를 변경 한 경우 (추가 한 경우)

이 작업을 수행하도록 안내 할 수 있습니까?

미리 감사드립니다. 당신이이 같이 저장 호출 할 때

답변

2

일반적으로 : $ this-> 요청 -에

$this->User->save($this->request->data) 

데이터를> 데이터는 기본적으로 삭제됩니다. 편집 메소드에서 아래에 동일한 저장을 다시 사용하는 if 문이 있습니다.

cakebaked 편집 방법에서 복사 한 것으로 가정하는 기본 기능은 일반적으로 저장을 수행하고 반환 된 논리를 사용하여 해당 if 문에 전원을 공급합니다. 두 번째로 호출하면 false가 반환 될 수 있습니다. 이는 if 문에서 건너 뛸 가능성이 높습니다.

이를 디버깅하기 위해, 나는 다른 위치에 다음의 몇 가지 제안 :

또한
debug($this->request->data); 

, 디버그 출력물이 평균 시간에, 그래서 당신이 경우 내부 리디렉션을 주석 할 수 있습니다, 리디렉션에 삭제됩니다 그래서 같은 문 :

if ($this->User->save($this->request->data)) { 
    $this->Session->setFlash('Успешно променихте профила си.', 'success_message'); 
    //$this->redirect(array('action' => 'profile')); 
} 
0
if($this->Auth->user() && $this->Auth->user('id') == $id) { 
    $this->User->read(null, $id); 
    $this->User->set(array(
     'email' => $this->data['User']['email'], 
     'password' => $this->data['User']['password'], 
     'social_profile' => 'bla bla' 
    )); 
    $this->User->save(); 
    // etc 

가 필요하시면 할 수 있습니다.

more @http://book.cakephp.org/view/1031/Saving-Your-Data

관련 문제