protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='house-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
原來~ yii已經幫我們建立好AJAX的驗證code了!
那我們來實作吧!
STEP 1
在Contorller裡需要用到AJAX的action加上這句:
$this->performAjaxValidation($model);
結果就會像這樣:
public function actionCreate()
{
$model=new Bnb;
$this->performAjaxValidation($model);
if(isset($_POST['Bnb']))
{
$model->attributes=$_POST['House'];
if($model->save())
$this->redirect(array('view', 'id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}
STEP 2
view裡的_form.php打開AJAX服務
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'house-form',
'enableAjaxValidation'=>true,
)); ?>
NOTE:
驗證的相關規則是在models裡喔!
ex:
public function rules()
{
return array(
array('adminId, adminPw, 'required'),
array('adminMail', 'email'),
);
}
yii內建的驗證功能如下:(CValidator)
required
|
驗證屬性值必需有值,不能為空
|
filter
|
用過濾器轉換屬性的值
|
match
|
驗證屬性值匹配一個正則表達式
|
email
|
驗證屬性值為有一個有效的Email地址
|
url
|
驗證屬性值是一個有效的URL
|
unique
|
驗證屬性值在表中的對應列中是唯一的
|
compare
|
驗證屬性值與另一個屬性的值相等
|
length
|
驗證屬性值的長度在一個範圍內
|
in
|
驗證屬性值在一個預定義列表中
|
numerical
|
驗證屬性值是數字
|
captcha
|
驗證屬性的值等於一個顯示的CAPTCHA(驗證碼)的值
|
file
|
驗證屬性值包含上傳的文件
|
type
|
驗證屬性值是一個指定的數據類型
|
default
|
驗證屬性值為分配的默認值
|
exist
|
驗證屬性值在表中的對應列中存在
|
boolean
|
驗證屬性值是布爾值(true或false)
|
safe
|
標記屬性值為安全
|
unsafe
|
標記屬性值為不安全
|
date
|
驗證屬性值是日期
|
沒有留言:
張貼留言