2014-12-07 4 views
0

양식이 있으며 사용자가 양식을 제출하고 유효성 검사가 완료된 후 모달 창에서 전자 메일과 닉네임을 요청합니다. 사용자가 전자 메일과 닉네임을 채우고 제출하면 유효성을 검사하여 새 레코드로 저장하거나 기존 전자 메일의 아이디를 얻고 싶습니다 (전자 메일이 이미 사용 된 경우). 유효성 검사가 성공적이지 않으면 사용자는 동일한 모달로 값을 수정할 수 있어야합니다. 모든 것이 정상이면, 사용자 ID 생성을 포함한 양식을 저장하고 싶습니다.Yii에 양식을 제출하기 전에 모달에있는 사용자 정보

이미 양식을 저장하고 사용자가 작성/찾기 프로세스를 완료했습니다. 나는 이것을 모아서 위에서 설명한 시나리오에서 일하는 법을 모릅니다. 누구든지 설명 할 수 있을까요? Yii에서 어떻게해야합니까? 나는 Yii 1.1.15와 Yii Booster를 사용하고있다. 고맙습니다.

답변

0

Yii에서 _form.php보기 파일은 기본적으로 update.phpcreate.php보기에서 사용됩니다.

그럼, 당신은 할 필요가 있습니다. 비슷 : update.php와 create.php보기 모두에서 모달로 양식을 삽입하십시오. 동작이 다르므로 논리를 별도로 유지하십시오. 이것이 MVC의 기본 이점입니다.

public function actionCreate() { 
    $model = new Users; 
    if (isset($_POST['Users'])) { 
     $model->attributes = $_POST['Users']; 
     if ($model->save()) { // here in the save() method the valadation is included 
           // ONLY after we validate and successfully saved we go to update action 
       $this->redirect(array('update', 'id' => $model->id)); 
     } 
    } 
    $this->render('create', array(
     'model' => $model, 
    )); 
} 

중요한 것은 당신이 save() 방법을 저장하려고하면 유효성 검사가 자동으로 무슨 일이 생긴 것입니다. 유효성 검사가 성공적으로 수행되지 않으면 로직은 모델에 데이터가 이미 전달되어 있으므로보기에 채워진 필드가있는 동일한 작업 (예 : 생성)으로 돌아갑니다. $model->attributes = $_POST['Users'].

유효성 검사가 성공하면 추가로 리디렉션됩니다. Nessesary 아약스 양식 제출, 심지어 캐주얼 여기에 맞는 제출하십시오.

public function actionUpdate($id) { 
    $model = $this->loadModel($id); 
    if (isset($_POST['Users'])) { 
     $model->attributes = $_POST['Users']; 
     if ($model->save()) { // after saving EXISTING record we redirect to 'admin' action 
       $this->redirect(array('admin')); 
     } 
    } 
    $this->render('update', array(
     'model' => $model, 
    )); 
} 

원래 설계대로 유지하는보기 (업데이트/작성)의 양식. 고유성

검증 모델 규칙()에 간단하다 : 이메일 구문

array('username, email', 'unique'), 

이메일 valadation는 것은 같이 보인다

array('email', 'email'), 
+0

그래서 해결책은 다음과 같아야합니다 - 아약스 양식을 만듭니다 submit - 유효성 확인이 유효하면 모달 채우기 - 사용자가 전자 메일 및 닉네임을 입력합니다. 다음에 수행 할 작업은 무엇입니까? 이메일과 닉네임을 확인한 다음 모든 데이터를 함께 제출하려면 어떻게해야합니까? – kokoseq

+0

@kokoseq, 내 업데이트 참조. –

관련 문제