>  기사  >  백엔드 개발  >  Yii는 Ajax 검증을 사용하여 오류 메시지 상자를 표시합니다.

Yii는 Ajax 검증을 사용하여 오류 메시지 상자를 표시합니다.

WBOY
WBOY원래의
2016-05-16 20:29:081033검색

이 기사의 예에서는 Ajax 검증을 사용하여 Yii에 표시되는 오류 메시지 상자에 대한 해결 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법은 다음과 같습니다.

Yii에는 ajax 양식 확인이 포함되어 있습니다. 일부 친구들은 이를 알지 못할 수도 있지만 오늘 yii와 함께 제공되는 ajax 양식 확인을 사용할 때 몇 가지 문제가 발생했습니다.

Yii에서는 ajax를 사용하여 액션을 실행할 수 있는데, 이 액션에서 가끔 오류 메시지가 뜰 때가 있습니다. 처리 방법은 다음과 같습니다

기본 아이디어

다음과 같은 예외를 사용하세요.

코드 복사 코드는 다음과 같습니다.
throw new CHttpException(403, '이 작업을 수행할 권한이 없습니다. .') ;

이 예외가 CHttpException이거나 YII_DEBUG가 true인 경우 CErrorHandler::errorAction을 통해 오류 메시지가 표시될 수 있습니다. 기본적으로 yiic에 의해 생성된 코드에서는 config/main.php
에 다음 코드를 추가하면 됩니다.

코드 복사 코드는 다음과 같습니다.
'errorHandler' => 'errorAction' => '사이트/오류',),
그러나 Yii 1.1.9 이상에서는 ajax 요청에 의해 발생한 예외가 CApplication::displayException()을 통해 표시됩니다. 이로 인해 메시지 표시 방법을 사용자 정의할 수 없습니다.

CGridView 삭제 요청에서 예외가 발생한 경우의 모습입니다(YII_DEBUG가 true)

Yii 1.1.9 ajax 요청을 확인하는 로직이 제거되었으므로 이제 ajax 예외도 CErrorHandler::errorAction을 통해 처리됩니다.

이런 방식으로 Ajax 메시지를 DIY할 수 있습니다.

다음 코드를 전달하세요


코드 복사 코드는 다음과 같습니다.
공용 함수 actionError(){
If($error=Yii::app()->errorHandler->error)
{
If(Yii::app()->request->isAjaxRequest)
echo $error['메시지'];
그 외
                  $this->render('error', $error);
}
}
나중에 코드를 공유해준 웹마스터를 찾았습니다

모델:

코드 복사 코드는 다음과 같습니다.
공용 함수 규칙()
{
// 참고:
              // 사용자 입력을 받습니다.
         반환 배열(
             array('콘텐츠, 작성자, 이메일', '필수'),
               array('작성자, 이메일, URL', '길이', '최대'=>128),
             배열('이메일','이메일'),
             배열('url','url'),
);
}

컨트롤러:
코드 복사 코드는 다음과 같습니다.
if(isset($_POST['ajax']) && $_POST ['ajax']===='댓글 형식')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}

보기:
코드 복사 코드는 다음과 같습니다.
beginWidget('CAactiveForm',array(
    'id'=>'post-form',                      //这是表单id
    'enableAjaxValidation'=>true,      //这里一定写 true
))); ?>
   

   


         echo $form->labelEx($model,'title');
 ?>
        textField($model,'title',array('size'=>80,'maxlength'=>128));
 ?>
         echo $form->error($model,'title');
 ?>
   

   


         echo $form->labelEx($model,'content');
 ?>
         echo CHtml::activeTextArea($model,'content',array('rows'=>10, 'cols'=>70));
 ?>
       

마크다운 구문
         echo $form->error($model,'content');
 ?>
   


 
$this->endWidget();
?>

这样好image很好的解决了yii ajax显示问题。

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.