모델에 추가 한 후 브라우저에 오류 메시지 보내기

Alexanderst

model확장되는이 CActiveRecord있고 .NET을 사용하여 해당 모델에 몇 가지 오류를 추가 한다고 가정 해 보겠습니다 $this->addError("foo", "Bar is broken");.

이제 브라우저가 다음과 같이 AJAX 요청을 보낼 때 모델의 유효성을 검사한다고 가정 해 보겠습니다.

if(isset($_POST['ajax']) && $_POST['ajax']==='user-login-form')
{
    echo CActiveForm::validate($model);
    Yii::app()->end();
}

내 질문은 다음과 같습니다. ¿ $model->getErrors()유효성 검사 오류를 처리하는 Yii 코드 CActiveForm가 클라이언트 측 코드를 수정하지 않고도 오류를 가져와 표시하도록 오류 ( 배열 반환)를 브라우저에 보내려면 어떻게 해야합니까?

=========== 편집 =========

로그인보기 :

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'usuarios-login-form',
    'enableAjaxValidation'=>true,
)); ?>

    <div class="row flush">
        <div class="4u">
            <?php echo $form->labelEx($model,'correo', array(
                'class'=>'pull-right'
            )); ?>
        </div>
        <div class="4u">
            <?php echo $form->textField($model,'correo'); ?>
        </div>
        <div class="4u">
            <?php echo $form->error($model,'correo', array(
                'class'=>'pull-left alert'
            )); ?>
        </div>
    </div>

    <div class="row flush">
        <div class="4u">
            <?php echo $form->labelEx($model,'password', array(
                'class'=>'pull-right'
            )); ?>
        </div>
        <div class="4u">
            <?php echo $form->passwordField($model,'password'); ?>
        </div>
        <div class="4u">
            <?php echo $form->error($model,'password', array(
                'class'=>'pull-left alert'
            )); ?>
        </div>
    </div>

    <div class="row flush">
        <div class="4u">&nbsp;</div>
        <div class="8u">
            <div class="pull-left infotxt">Los campos con <span class="required">*</span> son obligatorios.</div>
        </div>
    </div>

    <div class="row flush">
        <div class="4u">&nbsp;</div>
        <div class="8u">
            <?php echo CHtml::submitButton('Iniciar sesion', array(
                'class'=>'button alt pull-left loginbtn'
            )); ?>
        </div>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

제어 장치:

public function actionLogin()
{
    $model=new Usuarios('login');

    // if it is ajax validation request
    if(isset($_POST['ajax']) && $_POST['ajax']==='usuarios-login-form')
    {
        echo CActiveForm::validate($model);
        echo $model->login()->getErrors();
        Yii::app()->end();
    }

    if(isset($_POST['Usuarios']))
    {
        $model->attributes=$_POST['Usuarios'];
        if($model->validate() && $model->login()){
            if(Yii::app()->user->getState('type')=='Admin'){
                $this->redirect(array("admin"));
            }elseif(Yii::app()->user->getState('type')=='User'){
                $this->redirect(array("perfil"));
            }
            //$this->redirect(Yii::app()->user->returnUrl);
        }else{
            echo "adadasd";
            echo $model->login();
        }
    }
    $this->render('login',array('model'=>$model));
}

Usuarios 클래스의 로그인 방법 :

public function login(){
    $identity = new UserIdentity($this->correo, $this->password);
    $res = $identity->authenticate();
    if($res == UserIdentity::ERROR_NONE){
        Yii::app()->user->login($identity, 3600*24*7);
    }else if($res == UserIdentity::ERROR_USERNAME_INVALID){
        $this->addError("correo", "El usuario no existe");
    }else if($res == UserIdentity::ERROR_PASSWORD_INVALID){
        $this->addError("password", "La contraseña es incorrecta");
    }else{
        $this->addError("", "Error desconocido");
    }
    return $this;
}
Developerium

모델에서 beforeValidate()오류를 재정의 하고 논리를 확인할 수 있습니다.

protected function beforeValidate()
{
   if($this->foo == 'broken') // check your logic
   {
        $this->addError("foo", "Bar is broken");//error on foo attribute
        return false;
   }

   return parent::beforeValidate(); // keep the chain
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Chrome 브라우저에 nodejs 코드에 대한 계산 오류가 표시됨

분류에서Dev

MediaRecorder로 녹음 한 후 브라우저에서 오디오가 더 이상 재생되지 않음

분류에서Dev

내 대시 보드 출력에 대한 패키지 업데이트 후 오류 메시지

분류에서Dev

브라우저에서 응용 프로그램 쿠키를 삭제 한 후 호출하면 리디렉션에 실패하여 cors 오류가 표시됨

분류에서Dev

DataTables Library에서 내보내기 옵션을 추가 한 후 페이지 길이가 표시되지 않음

분류에서Dev

mvc의보기에 특정 오류 메시지 추가

분류에서Dev

`getDisplayMedia`에서 선택한 창에 초점을 맞추지 않도록 (맨 앞으로 가져 오기) 브라우저에 지시 할 수 있습니까?

분류에서Dev

내 모듈에 CSS 코드를 추가 한 후 오류 발생 (ODOO 12)

분류에서Dev

브라우저 작업에 대한 이벤트 가져 오기

분류에서Dev

localhost에 변경 사항을 저장 한 후 React Component가 브라우저에서 다시로드되지 않음

분류에서Dev

내가 브라우저에 추가 한 모든 플러그인과 함께 브라우저를 여는 방법

분류에서Dev

422 오류가 발생한 후 블레이드에 오류 메시지를 표시 할 수 없습니다.

분류에서Dev

오류가 발생한 경우에만 오류 메시지

분류에서Dev

회귀 모델의 플롯에 대한 오류 메시지

분류에서Dev

각도기를 사용하여 브라우저 콘솔에 오류가 없는지 확인하십시오.

분류에서Dev

Ubuntu에서 내부 오류가 발생한 후 "보내기"를 클릭하면 어떻게됩니까?

분류에서Dev

브라우저 콘솔에 "모듈을 찾을 수 없음"오류 메시지가 나타납니다.

분류에서Dev

경계를 벗어난 메모리에 액세스 한 후 즉시 분할 오류가 발생하지 않음

분류에서Dev

PATH에서 SOMETHING을 제거한 후 "COM Surrogate가 작동을 중지했습니다"라는 오류 메시지

분류에서Dev

R에서 오류 메시지 뒤에 세부 정보 추가

분류에서Dev

linearlayout 내부에 relativelayout을 추가 한 후 오류가 발생합니까?

분류에서Dev

Word 2013에서 개체 브라우저 다시 가져 오기

분류에서Dev

Android 기기 컬 오류에 알림 메시지 보내기

분류에서Dev

백엔드에 제품을 추가 한 후 Magento가 오류를 표시 함

분류에서Dev

HttpRequest를 취소 한 후 서버에서 시간 초과까지 브라우저가 중단됨

분류에서Dev

웹 페이지는 크기가 커진 글꼴을 표시하는 Android 브라우저를 제외한 모든 브라우저에서 잘 작동합니다.

분류에서Dev

나는 모두 보려면 일단 내가 메시지 가져 오기 androidx.appcompat.app.AppCompatActivity을 얻을 내 코드에서 오류가 무엇입니까? 사진의 오류에 대한 링크

분류에서Dev

다른 관련없는 코드를 추가 한 후에 만 메서드 오류

분류에서Dev

JSQmessagesViewController에 메시지를 추가 한 후 사용할 방법

Related 관련 기사

  1. 1

    Chrome 브라우저에 nodejs 코드에 대한 계산 오류가 표시됨

  2. 2

    MediaRecorder로 녹음 한 후 브라우저에서 오디오가 더 이상 재생되지 않음

  3. 3

    내 대시 보드 출력에 대한 패키지 업데이트 후 오류 메시지

  4. 4

    브라우저에서 응용 프로그램 쿠키를 삭제 한 후 호출하면 리디렉션에 실패하여 cors 오류가 표시됨

  5. 5

    DataTables Library에서 내보내기 옵션을 추가 한 후 페이지 길이가 표시되지 않음

  6. 6

    mvc의보기에 특정 오류 메시지 추가

  7. 7

    `getDisplayMedia`에서 선택한 창에 초점을 맞추지 않도록 (맨 앞으로 가져 오기) 브라우저에 지시 할 수 있습니까?

  8. 8

    내 모듈에 CSS 코드를 추가 한 후 오류 발생 (ODOO 12)

  9. 9

    브라우저 작업에 대한 이벤트 가져 오기

  10. 10

    localhost에 변경 사항을 저장 한 후 React Component가 브라우저에서 다시로드되지 않음

  11. 11

    내가 브라우저에 추가 한 모든 플러그인과 함께 브라우저를 여는 방법

  12. 12

    422 오류가 발생한 후 블레이드에 오류 메시지를 표시 할 수 없습니다.

  13. 13

    오류가 발생한 경우에만 오류 메시지

  14. 14

    회귀 모델의 플롯에 대한 오류 메시지

  15. 15

    각도기를 사용하여 브라우저 콘솔에 오류가 없는지 확인하십시오.

  16. 16

    Ubuntu에서 내부 오류가 발생한 후 "보내기"를 클릭하면 어떻게됩니까?

  17. 17

    브라우저 콘솔에 "모듈을 찾을 수 없음"오류 메시지가 나타납니다.

  18. 18

    경계를 벗어난 메모리에 액세스 한 후 즉시 분할 오류가 발생하지 않음

  19. 19

    PATH에서 SOMETHING을 제거한 후 "COM Surrogate가 작동을 중지했습니다"라는 오류 메시지

  20. 20

    R에서 오류 메시지 뒤에 세부 정보 추가

  21. 21

    linearlayout 내부에 relativelayout을 추가 한 후 오류가 발생합니까?

  22. 22

    Word 2013에서 개체 브라우저 다시 가져 오기

  23. 23

    Android 기기 컬 오류에 알림 메시지 보내기

  24. 24

    백엔드에 제품을 추가 한 후 Magento가 오류를 표시 함

  25. 25

    HttpRequest를 취소 한 후 서버에서 시간 초과까지 브라우저가 중단됨

  26. 26

    웹 페이지는 크기가 커진 글꼴을 표시하는 Android 브라우저를 제외한 모든 브라우저에서 잘 작동합니다.

  27. 27

    나는 모두 보려면 일단 내가 메시지 가져 오기 androidx.appcompat.app.AppCompatActivity을 얻을 내 코드에서 오류가 무엇입니까? 사진의 오류에 대한 링크

  28. 28

    다른 관련없는 코드를 추가 한 후에 만 메서드 오류

  29. 29

    JSQmessagesViewController에 메시지를 추가 한 후 사용할 방법

뜨겁다태그

보관