사용자가 초대를 통해 액세스 할 수있는 등록 양식이 있습니다. 예를 들어 초대 된 사용자는 /users/register/[invite_code]
으로 이동하여 부분적으로 채워진 등록 양식을받을 수 있습니다. 예상하지 못한 것을보고 있습니다.초기 양식로드시 확인 수행
초대 코드가 유효하면 양식이 자동으로 미리 채워지도록 $this->data
에 사용자 구조를 반환하고 설정합니다. 미리 채우기가 작동하지만 양식이로드되면 양식을 제출 한 것처럼 데이터 유효성 오류가 표시됩니다. 값이 미리 채워지면 많은 [필드 이름]을 비울 수 없습니다.
질문에 대한 응답으로 등록 작업이 표시되고 양식을 제출하는 데 모두 호출됩니다. 코드는 다음과 같습니다.
public function register($invite = null) {
# Handle a submitted registration
if(!empty($this->data)) {
# Do stuff...
if($this->User->save($this->data)) {
$this->Session->setFlash('Welcome. Thanks for registering.', null, null, 'success');
$this->redirect($this->Auth->redirect());
}
else {
$this->Session->setFlash('Oh noz. There\'s a problem with your registration.', null, null, 'validation');
}
}
# If an invite is passed, pull the user attached to that invite.
if(!empty($invite)) {
# Attempt to pull the user that owns the invite
if(empty($user)) { # Unrecognized invite code
# Do stuff...
}
else { # Invited user found
if(!empty($user['User']['password'])) { # Invited user has already registered
# Do stuff...
}
else { # This is the invited user
$this->data = $user;
}
}
}
}
감사합니다. 내가 $this->data
에 사용자를 할당 할 때
다시이 오는 후 UPDATE
는 문제가 온다. 제거 할 때 유효성 검사 오류가 없습니다. 불행히도 사전 인구도 없습니다. 후자가 필요하므로 오류 메시지를 표시하지 않고 데이터 포인트를 설정하는 방법을 찾아야합니다. 2
I가 $this->User->invalidFields()
덤프 경우
UPDATE는, 심지어 초기 UsersController::beforeFilter()
의 첫 번째 줄의 배열 다란 채워져있다. 이것이 어떻게 가능한지? 이 문제를 일으키는 요청에서 일찍 무엇을 할 수 있습니까?
UPDATE 3
나는 또한 내가 UsersController::beforeFilter()
를 입력 할 때, $this->User->id
의 값이 이미 설정되어있는 것으로 나타났습니다. 나는 어디에서, 왜 그런지 모르지만 이것은 중요해 보입니다. 내가 아는 한, 실제 응용 프로그램 코드의 첫 번째 단계는 관련 컨트롤러의 beforeFilter
메서드이고 사용자 ID는 입력 할 때 설정됩니다.
코드를 표시 할 수 있습니까? 유효성 검사 오류 – kaklon
코드와 몇 가지 추가 발견 사항이 위에 추가 된 경우 데이터를 제출해야합니다. –