亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

yii2開發(fā)后記

2020-03-22 20:31:17
字體:
供稿:網(wǎng)友
  • 前些天準(zhǔn)備寫一個自己的博客CMS,考慮html' target='_blank'>PHP框架的時候想到了據(jù)說非常強大的yii,接觸yii時發(fā)現(xiàn)有2.0版本,果斷嘗最鮮的。這么一嘗試感覺入了坑了,yii2.0是2014年12月發(fā)布的,估計國內(nèi)用的人比較少,資料比較少,遇到問題百度yii2.0查出來好多1.0版本的答案,只好去google看英文站。一個小問題沒人提醒,又是STACK OVERFLOW又是自己翻源碼,弄了一天多。。??芍^是吃盡了苦頭。

    不過網(wǎng)站總算是做出來了,地址:http://www.alwayscoding.cn,以后博客在此站同步更新,而且,我也可以在上面肆無忌憚的放上自己喜歡的文章了~~另外源碼也放在了github上,地址:https://github.com/zhenbianshu/blog-cms,有想使用本CMS的我可以提供支持~最后自己也總結(jié)出來了下列的使用心得,準(zhǔn)備入手yii2.0的可以看一下,留個爪。


    基礎(chǔ)總結(jié)1.修改默認(rèn)控制器/方法

    yii默認(rèn)是site控制器,可以在web.php中設(shè)置$config中的'defaultRoute'='xxxx';使用自定義默認(rèn)的控制器。也可以改寫Yii::$app->defaultRoute屬性。

    yii的默認(rèn)方法是index,可以在vender/yiisoft/yii2/base/Controller.php 中進(jìn)行初始設(shè)置,也可以在控制器中改寫defaltAction='action'。

    2.添加獨立模塊

    yii可以在modules文件夾中添加自定義模塊,添加完成后在web.php中的$config中的'modules'=[id=..class=...]設(shè)置模塊的開關(guān)。

    模塊一般用于一些獨立的功能,像我站里的admin模塊整體負(fù)責(zé)后臺邏輯。

    3.模型操作表設(shè)置

    yii的模型有Model和ActiveRecord兩種,Model類用來處理基本的業(yè)務(wù)邏輯,沒有數(shù)據(jù)庫相關(guān)方法,如果要操作同名數(shù)據(jù)表,請繼承ActiveRecord類。

    我們用一個在models文件夾中的Operation.class里Operation類來繼承yiidbActiveRecord來操作Operation表。

    如果要操作其他表,也可以重寫public $tableName屬性來設(shè)置?;蚋膶懫鋞ableName方法(注意是靜態(tài)方法) : public static function tableName(){return 'tableName'}

    4.視圖層構(gòu)成

    yii的視圖層使用.php文件,而且其內(nèi)部的實現(xiàn)也多采用yii內(nèi)置小部件的形式,如<?= LinkPager::widget(['pagination'=>$pagination]) ?>來表示其分頁類。

    而且,像input這樣的小部件,用ActiveForm類來展現(xiàn),yii會對每個自動加入ajax驗證,其一般的小部件都放在yiiwidget里,我們還可以在此文件夾里構(gòu)建自定義的小部件類。

    5.布局模式

    yii會默認(rèn)開啟布局模式,其布局模板為view中的layout中的main.php,我們可以在veder/yiisoft/yii2/web/controller.php基礎(chǔ)類中public $layout屬性修改模板文件的配置。

    我們還可以設(shè)置關(guān)閉或指定特定的layout:

    控制器內(nèi)控制 public $layout=false/'layout' 控制器成員方法內(nèi)控制 $this->layout=false/'layout' 視圖中選擇布局 $this->context->layout=false/'layout'6.模型的基本設(shè)置

    yii的模型是MVC的處理器,它執(zhí)行對MVC邏輯的處理。 model的屬性定義是其核心,由于默認(rèn)定義魔術(shù)方法get/set,所以可以直接在model外調(diào)用$modle->attr='value',對模型的屬性進(jìn)行獲取/賦值。

    場景設(shè)置

    yii中有對場景的定義,定義場景可以使得yii在不同的情況下返回不同的數(shù)據(jù)信息。用model的scenarios()方法來設(shè)置返回數(shù)據(jù)。

    我們在使用model時傳入場景名 $model=new Model(['scenario'=>'login']);來確定場景。

    規(guī)則設(shè)置

    yii中對驗證規(guī)則的定義,使用rules()方法可以一條定義多條規(guī)則,也可以根據(jù)不同的場景進(jìn)行定義。外部驗證時用$model->validate()方法來執(zhí)行驗證。

    在安全模式下,要進(jìn)行安全驗證,即每一個屬性都要在rules里驗證,如果沒有特定規(guī)則,也要添加'safe'驗證。否則驗證失敗,存入數(shù)據(jù)庫也會失敗。

    標(biāo)簽設(shè)置

    在處理表單時,多用$model->attributes屬性來表示全部的屬性。其中attributeLabels方法return一個數(shù)組用來表示視圖層中ActiveForm產(chǎn)生的各個表單項的label標(biāo)簽

    7.引用JS/CSS文件

    yii中的view也使用面向?qū)ο?/u>方式 ,所以引入CSS和JS文件要用特殊的方法。

    使用$this->registerJsFile('js.js')來引入js文件; 使用$this->registerJsFile('js.js')來引入js文件;8.分頁類的使用
    //在模型中計算出總數(shù)量$count=$this->find()->where()->count();//用總條數(shù)和設(shè)定的每頁個數(shù)實例化一個yiidataPagination類$page=new Pagination([totalCount' => $count,'defaultPageSize'   => 2,]);//使用分頁類的屬性搜索想要的數(shù)據(jù),并返回數(shù)據(jù)$res=$this->find()->where()->offset($page->offset)->limit($page->limit)->all();return [$res,$page];//使用控制器渲染頁面$data=$model->getData();return $this->render('index',$data);//在視圖頁面中使用數(shù)據(jù)。foreach($res as key)...yiiwidgetsLinkPager::widget([pagination=$page,prevPageLabel='上一頁'])。
    9.創(chuàng)建url
    use yiihelpersUrl;Url::to(['xxx/xxx']);//或Yii::$app->urlManager->createUrl('xxx.xxx')
    10查詢構(gòu)建器

    yii里的QUERY查詢語句構(gòu)造器非常簡單好用,它可以用在模型和控制器中,雖然可能會造成模型與表不對應(yīng),但其構(gòu)成接近sql語句,使用它可以輕易寫出復(fù)雜的sql語句而不必嚴(yán)格遵從yii的內(nèi)置規(guī)則。

    方法為:

    $res=(new yiidbQuery())->select()->from()->leftJoin()->where->()->all();

    其中where語句較為復(fù)雜:

    where('in','id',$array)或where('id'=>$array)

    具體可以查看http://www.yiichina.com/doc/guide/2.0/db-query-builder中對where方法的解析。

    11.自定義函數(shù)

    yii里面自定義函數(shù)可以在vendor/yiisoft/yii2/helpers/文件夾里,新建一個XXX.php文件,然后定義一個自定義類,再定義靜態(tài)方法YYY()。

    使用時應(yīng)用基命名空間,use yiihelpersXXX,然后用類來引用基靜態(tài)方法XXX::YYY()

    12.關(guān)聯(lián)模型

    yii里面的關(guān)聯(lián)模型,用來在取得當(dāng)前表內(nèi)的一條記錄時,會取出對應(yīng)表的記錄。如A表內(nèi)每取出一條信息,也取出B表中跟A表對應(yīng)有信息,在ModelA里定義一個getBtable方法

    function getBtable(){    return $this->hasOne/hasMany(Btable::className,['bid'=>'aid']);}

    查詢時可以使用joinWith('Btable')->find();會在查找時查找其關(guān)聯(lián)對象;也可以使用$this->find()等方法結(jié)果對象

    使用$res->btable來直接引用對象。

    使用$res[n]->btable->attr來引用B表的對應(yīng)屬性。

    13.使用ActiveForm創(chuàng)建表單

    yii2中使用小部件創(chuàng)建view視圖的步驟: 設(shè)置一個Model設(shè)置其屬性

    public $username;public $password;

    設(shè)置其rule或場景等

    public function rules(){    return [            [['username', 'password','conpass'], 'required'],            ['conpass', 'password',        ];}

    設(shè)置其label

    public function attributeLabels(){        return [            'username' => '管理員',            'password' => '密碼',        ];    }

    然后在controller中將model的實例渲染進(jìn)去:

    $this->render('index',['model'=>(new Model/ActiveRecord)])

    最后在頁面中使用ActiveForm

    use yiiwidgetsActiveForm;<?php $form = ActiveForm::begin([    'action' => ['log/login'],    'method'=>'post'    ]); ?>    <?= $form->field($model, 'username') ?>    <?= $form->field($model, 'password') ?>    <div class='form-group'>        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>    </div><?php ActiveForm::end(); ?>
    14.使用驗證碼

    在controller中設(shè)置驗證碼的獨立方法

    public function actions() {        return [            'captcha' =>  [                'class' => 'yiicaptchaCaptchaAction',                'height' => 50,                'width' => 80,                'minLength' => 4,                'maxLength' => 4            ],        ];    }

    在model里設(shè)置rule和label,label同上

    public function rules(){    return [['verifyCode', 'captcha','captchaAction'=>'admin/log/captcha'],];}

    (captchaAction要設(shè)置為controller中的位置,如果自定義module要設(shè)置module) 在view中使用

    use yiicaptchaCaptcha;<?= $form->field($model, 'verifyCode')->widget(Captcha::className(),    ['captchaAction'=>'log/captcha',        'imageOptions'=>        ['alt'=>'點擊換圖', 'style'=>'cursor:pointer']    ]) ?>
    15.視圖中塊的使用

    塊內(nèi)容在$this->beginBlock(['id'=>xxx])和$this->endBlock()之間定義,在layout中使用$view->block[id]來引用??梢栽谕瓿上蚰0逯袑?dǎo)入視圖數(shù)據(jù)。

    也可以定義$this->var=xxx;在layout中用$this->var來引用。

    16.更新和刪除更新
    //查找到一條結(jié)果$res=$this->find()->where()->one();//對結(jié)果修改$res->attr='xxx';//執(zhí)行更新操作$res->update();
    刪除
    //刪除一條數(shù)據(jù)$this->findOne($id)->delete();//刪除所有符合條件的數(shù)據(jù)$this->deleteAll([where]);

    注意和竅門1.URL模塊間跳轉(zhuǎn)

    在模塊中用Url::to()方法創(chuàng)建URL時,會自動在前面添加模塊名,導(dǎo)致無法跳轉(zhuǎn)到其他模塊,我們可以在字符串前添加'//'符來返回根模塊,例如Url::to(['//index/index'])表示跳轉(zhuǎn)到初始地址。

    2.初始化變量

    想在控制器中每一個操作前,初始化一個變量的話不要重寫__construct構(gòu)造函數(shù),因為它需要傳入各種變量。最好重寫beforeAction()函數(shù),它會在執(zhí)行每一個action時都執(zhí)行一下。

    并且注意:方法的最后一定要添加return true語句。

    3.在JS中使用YII的變量

    若想在JS中使用YII的URL變量等,可以使用html中的script標(biāo)簽,將變量在第一次渲染視圖時預(yù)先解析出來,將下面代碼放在需要使用變量的地方之前。

    <script type='text/javascript'>    var key='<?=Url::to(['xxx/xxx']) ?>'</script>

    然后在JS文件中正常使用。

    4.全局常量的定義

    我們可以在config文件夾中的params.php中定義全局常量。

    然后在腳本中用Yii::$app->params['key']來引用。

    5.yii模型屬性轉(zhuǎn)數(shù)組

    YII用toArray()方法可以將模型的屬性轉(zhuǎn)換為數(shù)組進(jìn)行輸出,可獨立使用,也可以在查詢時用連續(xù)操作方式使用。

    6.在使用controller渲染view頁面時,一定要在render前加echo或return 寫作echo/return $this->render('view',$data);7.yii中的屬性,謹(jǐn)記!在ActiveForm中如果數(shù)據(jù)表中有了此字段,就不要再用public聲明一個屬性了,會導(dǎo)致attribute無法賦值。。。。(血淚)。PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    国产又粗又黄视频| 日本三级在线播放完整版| 在线观看电影av| 欧美二区在线视频| 久草在线免费福利| 亚洲色图图片专区| 狠狠躁夜夜躁人人爽超碰91| 国产香蕉在线视频| 亚洲精品在线免费播放| 台湾十八成人网| 一本久久a久久精品亚洲| 一区二区不卡视频在线观看| av电影网站在线观看| 蜜桃精品一区二区| 欧美三级中文字幕在线观看| 九九热在线视频观看这里只有精品| 欧美人妇做爰xxxⅹ性高电影| 日日av拍夜夜添久久免费| 欧美日韩亚洲一区二区三区四区| 精品动漫3d一区二区三区免费| 国产一级在线免费观看| 欧美日韩网址| 麻豆入口视频在线观看| 日韩欧美亚洲另类制服综合在线| www.毛片.com| 爱爱视频网站免费| 激情国产在线| 国产精品天天av精麻传媒| 日本韩国一区二区| 麻豆一区二区麻豆免费观看| 欧美日韩综合网| 久久亚洲高清| 精品人伦一区二区三区蜜桃网站| 天堂中文在线官网| 日韩av综合网站| 黄色网页在线| 亚洲欧美日韩在线不卡| 国产精品吊钟奶在线| 正义之心1992免费观看全集完整版| 日韩欧美国产综合在线一区二区三区| 日本在线高清视频一区| 久久视频这里只有精品| 亚洲国产成人精品一区二区| 91丝袜在线| 国产成人无码一二三区视频| 亚洲无av在线中文字幕| 免费视频中文字幕| 精品美女被调教视频大全网站| 九一免费看片| 四虎国产精品永久免费观看视频| 黄色网页在线免费看| 天天操夜夜骑| 欧美激情黑人| 亚洲一区二区三区国产| 亚洲一二三四2021不卡| 99久久婷婷国产综合| www.中文字幕在线| 欧美无乱码久久久免费午夜一区| 亚洲国产无码精品| 夜夜爽夜夜爽精品视频| 中文字幕精品—区二区| 久久不射中文字幕| 欧美插天视频在线播放| 免费观看一区二区三区毛片| 日本韩国欧美精品大片卡二| 一起操在线观看| 91精品国产一区二区三密臀| 国产精品美女久久久久久久网站| 精品久久久久久无码国产| a级片免费观看| 免费萌白酱国产一区二区三区| 国产精品123区| 亚洲成人在线网| 性猛交ⅹxxx富婆video| 超碰在线国产| 欧美黑人在线观看| 欧洲一级视频| 亚洲国产精品悠悠久久琪琪| 欧美独立站高清久久| 亚洲视频重口味| 色88888久久久久久影院按摩| 日日噜噜夜夜狠狠视频欧美人| 日韩福利一区二区| 精品99久久久久成人网站免费| 青青草国产在线观看| 国产精品久久久久久久久久久久久| 国产夫妻在线观看| 女人18毛片九区毛片在线| 成年大片免费视频播放二级| 久久色在线视频| 久久久久久久福利| 精品国产福利| 中文在线a在线| www亚洲一区| 国产香蕉视频在线观看| 久久久女人电视剧免费播放下载| 欧美高清性xxxxxxx| 国产日韩亚洲欧美| 国产 日韩 欧美 综合 一区| 亚洲精品国产精品国自产| 97中文字幕在线观看| 久久se精品一区二区| 日本人69视频| 精品国产aⅴ一区二区三区东京热| 国模大尺度一区二区三区| 2019中文字幕在线视频| 亚洲色图19p| 亚洲欧美久久婷婷爱综合一区天堂| 成人福利在线观看视频| 欧美一区二区免费视频| 中文字幕a级片| 国产裸体免费无遮挡| 午夜欧美2019年伦理| 日韩字幕在线观看| 国产三级精品三级在线| 91精品国产高清久久久久久91| 狠狠v欧美ⅴ日韩v亚洲v大胸| 中文字幕高清在线观看| 亚洲美女精品一区| 看成年女人免费午夜视频| 三级免费网站| 国产主播在线资源| 91蜜臀精品国产自偷在线| 一区二区三区在线播放视频| 国产综合视频一区二区三区免费| 神马影院午夜我不卡影院| 亚洲电影激情视频网站| 欧美女王vk| 91丨porny丨在线| 日韩精品91亚洲二区在线观看| 天堂а√在线资源在线| 欧美激情亚洲激情| 亚洲综合av影视| 热久久久久久久| 亚洲电影免费观看高清完整版在线| 成人在线视频一区二区三区| 久久久久久免费| 日韩伦理精品| 亚洲欧洲一区| www.久久精品.com| 日本成人免费在线| 国产激情欧美| 中文字幕在线观看你懂的| 国产成人精品视频免费看| 国产激情在线免费观看| 99re在线精品| 91涩漫在线观看| 一本色道久久综合亚洲精品不| 日韩一区在线视频| 成人黄色av片| 中文字幕在线观看视频免费| 亚洲国产视频在线| 午夜三级在线观看| 亚洲成人精品在线播放| 人妻av无码专区| 可以在线观看的av网站| 黄色av网站免费在线观看| 国产不卡在线观看视频| 欧美videosex性欧美黑吊| ririsao久久精品一区| 国内精品久久久久影院色| 97影视在线观看| 久久这里只有精品国产| 亲子伦视频一区二区三区| 在线亚洲午夜片av大片| chinesegaysextube| 极品魔鬼身材女神啪啪精品| 日韩三级在线观看视频| xxav国产精品美女主播| 色婷婷久久一区二区三区麻豆| 91精品国产高久久久久久五月天| 欧美日韩的一区二区| 欧美裸体视频| 欧美日韩国产乱码电影| 国产精品久久中文| 国产免费a∨片在线观看不卡| 超碰超碰97| 亚洲一区欧美| 国产艳俗歌舞表演hd| 国产福利微拍精品一区二区| 久久香蕉视频网站| 亚欧精品一区| 亚洲精品中文字| 色综合久久久久综合一本到桃花网| 啄木系列成人av电影| 久久久久久国产精品三级玉女聊斋| 久久精品女人的天堂av| 亚洲美女精品成人在线视频| 亚洲美女性视频| 精品国产91久久久久久| 国产极品美女到高潮| 日韩一区二区电影在线观看| 久久精品不卡| 国产乱对白刺激视频不卡| 在线观看亚洲大片短视频| 亚洲精品91| 91久久精品国产| 久久xxx视频| 国产精品区一区二区三在线播放| 清清草免费视频| 国产精品果冻传媒| 97人妻精品一区二区三区| 一出一进一爽一粗一大视频| 日本中文字幕视频在线| 日韩欧美你懂的| 538任你躁在线精品视频网站| 国产日韩一区二区三区| 日韩国产精品一区二区| 精品中文字幕在线观看| 最新av网址在线观看| 图片区亚洲欧美小说区| 91在线视频在线观看| 国产亚洲免费的视频看| 日韩理伦片在线| 亚洲精品国产精品国产自| 午夜精品婷婷| 四虎永久在线精品免费一区二区| 日本在线视频不卡| 中文av资源在线| 中国极品少妇xxxx| 试看120秒一区二区三区| 亚洲国产电影| 国产在线观看欧美| 国产亚洲欧美日韩高清| 亚洲av成人片色在线观看高潮| 久久精品国产精品亚洲红杏| 校园春色影音先锋| 中文字幕在线成人| 欧美日本国产| 91中文字幕在线视频| 欧美在线性视频| 青青草免费观看完整版高清| 久久手机精品视频| 中文在线免费观看| 免费黄色在线看| 亚洲天堂在线播放| 黄色三级网站| 亚洲+变态+欧美+另类+精品| 日韩亚洲精品视频| 国产精品色在线观看| 亚洲一区精品在线观看| 精精国产xxxx视频在线| 亚洲1区在线观看| 性欧美video另类hd尤物| 国产福利第一页| 男人天堂视频在线| 成人小说亚洲一区二区三区| 国产三级理论片| 国产区卡一卡二卡三乱码免费| 亚洲成人免费电影| 热99精品只有里视频精品| 中文在线综合| 国产老头老太做爰视频| 国产91久久久久| 久久精品国产99国产精品澳门| y111111国产精品久久久| 欧美电影院免费观看| 九九这里只有精品视频| 欧美性生活一级| 999国内精品视频在线| 91日韩视频| 亚洲欧美色图区| 黄色99视频| 天干夜夜爽爽日日日日| 国产精品福利在线观看网址| 国产精品久久久久久久久免费看| 中文字幕日本最新乱码视频| 午夜亚洲福利| 激情综合中文娱乐网| 欧美自拍视频在线| 992tv在线成人免费观看| 污视频网站在线免费| 午夜精品一区二区三区视频免费看| 国产情侣av自拍| 国内精品国语自产拍在线观看| 丰满少妇一区二区| 欧美日韩成人在线播放| 欧美一级一区二区三区| 激情欧美一区| 亚洲永久精品国产| 香蕉在线观看视频| 另类的小说在线视频另类成人小视频在线| 18成人免费观看视频| 亚洲影音一区| 精品国产午夜肉伦伦影院| 高清精品视频| 国产偷久久久精品专区| 久久国产精品精品国产色婷婷| 99久久久久久99| 国产精品www994| 亚洲一区av在线| 欧美一级免费在线观看| 成人福利视频导航| 久久爱一区二区| 国产大学生校花援交在线播放| 国产精品美女主播| 色综合久久久久无码专区| 在线观看欧美精品| 国产精品极品美女在线观看免费| 26uuu精品一区二区在线观看| 中文字幕有码无码人妻av蜜桃| 亚洲精品免费av| 日日干天天干| 欧美色图另类小说| 少妇丰满尤物大尺度写真| 欧美一区二区视频在线观看2020| 伊人网综合在线| 人妻久久一区二区| 不卡视频在线观看| 91老司机福利在线| 人人妻人人澡人人爽人人欧美一区| 97在线观看免费| 91麻豆精品国产91久久久平台| 冲田杏梨av在线| 99久久99久久综合| 亚洲三级在线播放| www成人免费观看网站| 国产美女久久久久| 国产精品亚洲精品| 日韩pacopacomama| 中文字幕成人在线视频| 成人免费在线观看| 国产影视精品一区二区三区| 国产在线播放一区三区四| 无码人妻丰满熟妇奶水区码| 国产野外战在线播放| 一区二区国产精品| 电影亚洲一区|