yii2.0的mvc中的model

model的基类在vendor\yiisoft\yii2\base\model文件中

class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayable
它继承了组件这个类(component)并实现了IteratorAggregate,arrayAccess,Arrayable三个接口
IteratorAggregate:迭代器(一种设计模式)
	在models文件夹下创建UserForm.php文件
	 <?php
 		namespace  app\models;
 		use        yii\base\Model;
 		class UserForm extends Model{
    			 public $username;
     			 public $password;
 }
	在controllers文件夹下创建UserController.php文件
	<?php
		namespace  app\controllers;
		use        yii\web\Controller;
		use        app\models\UserForm;
    		class UserController extends Controller{
        		public function actionLogin(){
           			 $model=new UserForm();
            			 foreach($model as $k=>$c){
               			 echo $k;
           			 }
       		 }
    }
然后尝试访问 yii.basic.com/user/login.html
model中的属性标签:具体适用场景不明。。。。
在base/model中  有public function attributeLabels()这么一个方法
在Model的子类UserForm中重新定义这个方法

<?php
 namespace  app\models;
 use        yii\base\Model;
 class UserForm extends Model{
     public $username;
     public $password;
     /*
      * 属性标签配置
      *
      * */
     public function attributeLabels()
     {
         return [
             'username'=>'登录账号',
             'password'=>'输入密码'
         ];
     }
 }
在UserController中显示属性标签
	
<?php
namespace  app\controllers;
use        yii\web\Controller;
use        app\models\UserForm;
    class UserController extends Controller{
        public function actionLogin(){
            $model=new UserForm();
          /*  foreach($model as $k=>$c){
                echo $k;
            }*/
            foreach($model as $k=>$v){
                echo $model->getAttributeLabel($k); /* getAttributeLable
							获得属性标签 */

            }
        }

    }
验证规则: 验证规则也在base/models中
	
<?php
 namespace  app\models;
 use        yii\base\Model;
 class UserForm extends Model{
     public $username;
     public $password;
     public $phone;
     public $repassword;
     /*
      * 属性标签配置
      *
      * */
     public function attributeLabels()
     {
         return [
             'username'=>'登录账号',
             'password'=>'输入密码',
             'phone'   =>'手机号'
         ];
     }
     //数据验证规则
     public function rules()
     {
          return [
      /*要验证的字段包括有username,password,phone,
      message是报错提示,
      在控制器中调用$model->getErrors(),可获得报错信息*/
            [['username','password','phone'],'required','message'=>'必填字段'],
      //规定username的格式必须是邮箱格式
            ['username','email','message'=>'登录账号格式错误'],
     //规定phone的格式必须全是数字
            // ['phone','number'],
     /*相等用compare比较方法, compareAttribute=>password比较是否和password相等
     'on'=>'register'表示在注册的场景下被调用   */
            ['repassword','compare','compareAttribute'=>'password','message'=>'两次密码输入不一致','on'=>'register'],
     //required表示不能为空
            ['phone','required','message'=>'手机号必填'],
            ['repassword','required','message'=>'再次输入密码必填'],
     //配置正则的验证
            ['phone','match','pattern'=>'/^1[3-8][0-9]{9}$/','message'=>'手机格式错误','on'=>'register'],
            ['password','number','message'=>'密码格式错误']
          ];
     }
     //场景配置,在控制器中设置场景的时候生效
     public function scenarios()
     {
         $scenarios=parent::scenarios();
         $scenarios['login']=['username','password'];    //登录场景,规定登录场景包含的字段
         $scenarios['register']=['username','password','repassword','phone']; //注册场景
         return $scenarios;
     }

 }
		//在UserController.php中验证数据
	
<?php
	namespace  app\controllers;
	use        yii\web\Controller;
	use        app\models\UserForm;
        
	class UserController extends Controller{
        
	public function actionLogin(){
            $model=new UserForm();
            $model->scenario='register';//场景设置为注册
            $model->username='yyt@qq.com';
            $model->password= '123' ;
	    
	
	//块赋值
	$model->attributes=['username'=>'adawd@164.com','password'=>111];
	//数据导出
	\Yii::$app->response->format=Response::FORMAT_JSON;
	return $model->toArray();

//属性 /* foreach($model as $k=>$c){ echo $k; }*/ //属性标签 /*foreach($model as $k=>$v){ echo $model->getAttributeLabel($k); }*/ /*数据验证 * */ if($model->validate()){ echo"success"; }else{ // var_dump($model->getErrors()); //得到字段的所有错误信息 var_dump($model->getFirstErrors());//得到字段的第一条错误信息 // var_dump($model->getFirstError('username'));//得到指定字段的错误信息 } } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值