이 기사의 예에서는 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程序设计有所帮助。