您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > Yii2.0学习笔记完全版
Yii2.0学习笔记1.搭建环境及目录结构1.1搭建环境参考1:Yii2.0框架下载安装-Yii中文网参考2:yii2.0-advanced高级版项目搭建(一)目录结构basic/应用根目录composer.jsonComposer配置文件,描述包信息config/包含应用配置及其它配置console.php控制台应用配置信息web.phpWeb应用配置信息commands/包含控制台命令类controllers/包含控制器类models/包含模型类runtime/包含Yii在运行时生成的文件,例如日志和缓存文件vendor/包含已经安装的Composer包,包括Yii框架自身views/包含视图文件web/Web应用根目录,包含Web入口文件assets/包含Yii发布的资源文件(javascript和css)index.php应用入口文件yiiYii控制台命令执行脚本2.一些常规配置2.1框架源的设置在配置文件web.php中如下配置$config=['vendorPath'='D:\xampp\htdocs\]2.2设置默认布局2)在所在的控制器中加入,public$layout=mymain;2.3设置默认控制器在yii2-vendor\yiisoft\yii2\web.Application.php中public$defaultRoute='index';//默认路由2.4设置默认首页在配置文件web.php中如下配置,$config=['defaultRoute'='index',//设置默认路由]2.5数据库连接配置在配置文件db.php中如下配置,本人数据库为wxj,用户名root,密码为空?phpreturn['class'='yii\db\Connection','dsn'='mysql:host=localhost;dbname=wxj','username'='root','password'='','charset'='utf8',];2.6配置虚拟主机1)修改虚拟主机配置文件:xampp\apache\conf\extra\httpd-vhosts.conf。给定相应的域名和地址VirtualHost*:80DocumentRootD:\xampp\htdocs\)找到C:\Windows\System32\drivers\etc\hosts添加127.0.0.1paycenter.social-touch.com3)在URL地址中直接输入paycenter.social-touch.com3.数据模型model3.1model格式Model类也是更多高级模型如ActiveRecord活动记录的基类,模型并不强制一定要继承yii\base\Model,但是由于很多组件支持yii\base\Model,最好使用它做为模型基类。在model中主要是指定相应的表名和相应的规则3.2model数据库连接在配置文件db.php中return['class'='yii\db\Connection','dsn'='mysql:host=localhost;dbname=wxj','username'='root','password'='','charset'='utf8',];3.3model中的增删改查在做增删改查是要引用数据模型useWeixinPay\models\WpUsers;3.3.1添加数据$model=newUser();$model-username='username';$model-age='20';$model-insert();3.3.2删除数据User::deleteAll('name=小伙儿');删除name=小伙儿的数据;User::findOne($id)-delete();删除主键为$id变量值的数据库;User::deleteAll('age:ageANDsex=:sex',[':age'='20',':sex'='1']);删除符合条件的数据;3.3.3修改数据先查询到用户名与密码匹配的数据—再修改其密码-执行写入动作$rel=WpUsers::findOne(['username'=$username,'password'=$oldpassword]);$rel-password=$password;if($rel-save())3.3.4查询单表查询User::find()-orderBy('idDESC')-all();此方法是排序查询;User::findBySql('SELECT*FROMuser')-all();此方法是用sql语句查询user表里面的所有数据;User::find()-andWhere(['sex'='男','age'='24'])-count('id');统计符合条件的总条数;User::findOne($id);//返回主键id=1的一条数据;User::find()-where(['name'='ttt'])-one();//返回['name'='ttt']的一条数据;在用户表中以姓名为查询条件$info=WpUsers::find()-where(['username'=$username])-asArray()-all();在用户表中以姓名和密码为查询条件$re=WpUsers::find()-where(['username'=$username,'password'=$password])-asArray()-all();多表联合查询查询如要多表查询,先确定主表:如下主表(Relation关系表)如下子表(programmer程序员表)如下子表(project项目表)1)在主表的model中引用需要关联的表即usemodel,然后在主表model中写需要关联表的方法;如下程序写法:以下为Relation为主表,其余为关联子表publicfunctiongetProgrammer(){//第一个参数为要关联的子表模型类名,//第二个参数指定关联子表的id字段=主表的uid,return$this-hasOne(Programmer::className(),['id'='uid']);}publicfunctiongetProject(){//第一个参数为要关联的子表模型类名,//第二个参数指定关联子表的id字段=主表的pidreturn$this-hasOne(Project::className(),['id'='pid']);}以下为project为主表,其余为关联子表publicfunctiongetProgrammer(){//第一个参数为要关联的子表模型类名,//第二个参数指定子表的id=关联主表的charge字段,return$this-hasOne(Programmer::className(),['id'='charge']);}2)在控制器中引用该主表mode,在方法中如下写查询方法两表查询如下:其中project是主表Project::find()-joinWith('programmer')-asArray()-all();如需条件过滤则:Project::find()-joinWith('programmer')-where(['project.id'=$key])-asArray()-all();如需联合3表查询则:注意表名小写Relation::find()-joinWith('programmer')-joinWith('Project')-asArray()-all();3.4数据验证在model中写一个rules方法进行验证,publicfunctionrules(){return[[['teacher_id','name','price','address','class_time','limit_num','description'],'required','message'=请输入{attribute},'on'=['create','update']],[['limit_num','teacher_id'],'number','message'='请填入正确的{attribute}','on'=['create','update']],['class_time','compare_time','message'='{attribute}不能小于当前时间','on'=['create','update']],['limit_num','compare','compareValue'=$this-use_num,'operator'='','message'='{attribute}不能大于已招人数,已招人数为:'.$this-use_num,'on'='update'],['description','safe']];}注意,有些验证类型不支持message,['mobile','string','min'=11,'max'=11,'tooShort'='{attribute}位数为11位','tooLong'='{attribute}位数为11位','on'=['create','update']],}消息提示在tooShort和tooLong上面4.视图层view4.1格式在views文件夹下建与控制器中的方法同名文件夹(所有文件夹名称小写)视图文件为php文件,视图文件与1.1版本类似4.2注册CSS或JS方法:方法一:1)因在asset/AppAset.php中封装了一个类如下:namespaceapp\assets;useyii\web\AssetBundle;/***@authorQiangXueqiang.xue@gmail.com*@since2.0*/classAppAssetextendsAssetBundle{public$basePath='@webroot';public$baseUrl='@web';public$css=['css/site.css','css/bootstrap.min.css',//布局'css/font-awesome.min.css',//小图标'css/ace-fonts.css',//字体'css/ace.min.css',//公共部分];public$js=['js/jquery-2.0.3.min.js','js/bootstrap.min.js','js/ace.min.js','js/ace-extra.min.js',];public$depends=['yii\web\YiiAsset','yii\bootstrap\BootstrapAsset',];}2)即在视图文件中只需引用该类useapp\assets\AppAsset;AppAsset::register($this);即可调用公共的类文件3)如需个性化调用?phpechoHtml::cssFile('@web/assets/css/font-awesome.min.css')?方法二:1)类似方法一,在a
本文标题:Yii2.0学习笔记完全版
链接地址:https://www.777doc.com/doc-4373756 .html