标签:验证 nsa 成功 each header begin blank amp 数据
属性 : 表现业务数据,可以像普通类属性或数组一样被访问 (e.g. public $name)
属性标签 :指定属性显示出来的标签 (例如: models\ContactForm 类,function attributeLabels(){} 方法里面定义的就是属性标签)
public function attributeLabels()
{
return [
‘verifyCode‘ => ‘Verification Code‘, // 所有的verifyCode 属性在页面中都显示为 Verification Code
‘name‘ => ‘姓名‘, // 所有的 name 属性在也面中都显示为 "姓名" 两个字
];
}
3、块儿赋值 :支持一步给许多属性赋值;
$model->load(Yii::$app->request->post()) # 使用load()方法进行块儿赋值,$app->request->post()获取所有由前台提交过来的数据
4、验证规则 :确保数据数据符合所申明的验证规则(例如在 models\ContactForm 类,function rules(){} 方法里面定义)
public function rules()
{
return [
[[‘name‘, ‘email‘, ‘subject‘, ‘body‘], ‘required‘], // name, email, subject 和 body are 都是必填字段
[‘name‘,‘integer‘], // name 必须是整数
[‘name‘,‘compare‘,‘compareValue‘=>30,‘operator‘=>‘>=‘], // name >=30
[‘email‘, ‘email‘], // email 必须是一个合法的邮箱地址
[‘verifyCode‘, ‘captcha‘], // 验证码必须填写正确
];
}
验证时采用 yii\base\Model::validate() 方法触发数据验证,如果有数据验证失败,将自动把 yii\base\Model::hasErrors() 属性置为 true,
可以使用 yii\base\Model::getErrors() 来查看错误详情。e.g:
<?php
$model = new EntryForm();
$model -> name = ‘Carroll‘;
$model -> email = ‘wrong‘;
if($model -> validate()){
// 验证成功
}else{
// 验证失败
// 使用 $error = $model -> getErrors(); var_dump($errors); 获取错误详情。
}
5、表与表之间的关联(多对一或者一对一,例如文章对应文章状态,使用 hasOne() )
/**
* 建立文章类和文章状态类之间的联系,建立起这种联系后,相当于原来的 Post 类就多了一个属性 status0,这个属性值是文章状态类的对象
* 获取状态名可以使用:$thePost->status0->name 来获取
*/
public function getStatus0()
{
return $this->hasOne(Poststatus::className(), [‘id‘ => ‘status‘]); // Poststatus::className 是文章状态表的表名,[‘id‘ => ‘status‘]是关联的条件
}
(一对多,例如文章对应文章评论,使用 hasMany() )
/**
* Post 类多了一个 commets 属性,这个属性是一个数组,数组是由评论对象组成的
* 获取评论使用:$Post -> comments 来获取,但它是一个对象数组,如果要访问具体的某个对象,就需要用 foreach 来遍历
*/
public function getComments()
{
return $this->hasMany(Comment::className(), [‘post_id‘ => ‘id‘]);
}
<?php $this->beginPage() ?> // 在布局的开始处调用 $this 指向 yii\web\view 来管理和渲染这个视图文件,用来标识一个html文件的开始
<html>
<head>
<?php $this->header() ?> // 在 head 标签处调用,标识html文件头部的位置
</head>
<body>
<?php $this->beginBody() ?> // 在 body 的开始处调用,标识 html 文件 body 部分的起始位置
<?php $this->endBody() ?> // 在 body 的起始处调用,标识 html 文件 body 部分的结束位置
</body>
</html>
<?php $this->endPage() ?> // 在布局的结尾处调用,用来标识一个html文件的结束
6、使用 <?=Html::encode($variable) ?> 可以防止被恶意JavaScript xss(跨站脚本)攻击,就是使用htmlspecialchars()将预定义字符转换为 html 实体
htmlspecialchars($content, ENT_QUOTES | ENT_SUBSTITUTE,‘UTF-8‘, true);
<?= $this->render(‘_form‘, [ ‘model‘ => $model, ]) ?>
查看方法:从类参考手册中的yii\web\controller\所有方法中查看render()方法
public string render($view,$params=[])
public function actionSayHello($message=‘Hello‘)
{
return $this->render(‘say-hello‘,[‘message‘=>$message]);
}
public function actionEntry(){
$model = new EntryForm;
if($model->load(Yii::$app->request->post())&&$model->validate()){
return $this->render(‘entry-confirm‘,[‘model‘=>$model]);
}else{
return $this->render(‘entry‘,[‘model‘=>$model]);
}
}
注:本文为作者(44106-kangaroo) 看完魏羲教你学Yii2.0 视频后所记,如有转载请注明出处:http://www.cnblogs.com/chrdai/p/8004737.html
标签:验证 nsa 成功 each header begin blank amp 数据
原文地址:http://www.cnblogs.com/chrdai/p/8004737.html