日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > PHP > 正文

yii2開發后記

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

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


    基礎總結1.修改默認控制器/方法

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

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

    2.添加獨立模塊

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

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

    3.模型操作表設置

    yii的模型有Model和ActiveRecord兩種,Model類用來處理基本的業務邏輯,沒有數據庫相關方法,如果要操作同名數據表,請繼承ActiveRecord類。

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

    如果要操作其他表,也可以重寫public $tableName屬性來設置。或改寫其tableName方法(注意是靜態方法) : public static function tableName(){return 'tableName'}

    4.視圖層構成

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

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

    5.布局模式

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

    我們還可以設置關閉或指定特定的layout:

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

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

    場景設置

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

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

    規則設置

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

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

    標簽設置

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

    7.引用JS/CSS文件

    yii中的view也使用面向對象方式 ,所以引入CSS和JS文件要用特殊的方法。

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

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

    方法為:

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

    其中where語句較為復雜:

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

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

    11.自定義函數

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

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

    12.關聯模型

    yii里面的關聯模型,用來在取得當前表內的一條記錄時,會取出對應表的記錄。如A表內每取出一條信息,也取出B表中跟A表對應有信息,在ModelA里定義一個getBtable方法

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

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

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

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

    13.使用ActiveForm創建表單

    yii2中使用小部件創建view視圖的步驟: 設置一個Model設置其屬性

    public $username;public $password;

    設置其rule或場景等

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

    設置其label

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

    然后在controller中將model的實例渲染進去:

    $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中設置驗證碼的獨立方法

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

    在model里設置rule和label,label同上

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

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

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

    塊內容在$this->beginBlock(['id'=>xxx])和$this->endBlock()之間定義,在layout中使用$view->block[id]來引用。可以在完成向模板中導入視圖數據。

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

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

    注意和竅門1.URL模塊間跳轉

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

    2.初始化變量

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

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

    3.在JS中使用YII的變量

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

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

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

    4.全局常量的定義

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

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

    5.yii模型屬性轉數組

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

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

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

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    成人一区二区不卡免费| 欧美日韩性视频一区二区三区| 日韩欧美国产综合| 国产日韩在线视频| 中文字幕欧美亚洲| 国产在线播放一区二区| 精品成a人在线观看| 久久 天天综合| 欧美一级免费看| 红桃视频亚洲| 欧美日韩高清在线一区| 国产一级免费| 91精品国产99| 午夜视频在线观看一区| 中文字幕日韩精品在线| 91久久大香伊蕉在人线| 中文字幕 亚洲视频| 日韩不卡中文字幕| 中文字幕在线国产| 久久精品国产2020观看福利| 亚洲一级在线| 亚洲va韩国va欧美va精品| 国产欧美日韩精品综合| 欧美日韩免费精品| 国产日韩在线视频| 日韩三级一区二区| 国产高清在线一区| 午夜伦欧美伦电影理论片| 色www精品视频在线观看| 欧美日韩国产一二三| 美女尤物久久精品| 欧美日韩国产首页在线观看| 精品中文字幕视频| 国产一二三精品| 国产午夜在线观看| 国产激情三区| 中文不卡在线| 日韩久久久精品| 国产福利久久久| 日韩欧美国产高清| 国产欧美日韩精品高清二区综合区| 国产午夜精品久久| 国产午夜精品视频免费不卡69堂 | 日韩中文字幕91| av一卡二卡| 蜜桃视频中文字幕| 日韩一二三四区| 亚洲一级二级| a级在线免费观看| 亚洲午夜久久| 免费精品国产自产拍观看| 久久久99精品久久| 国产天堂素人系列在线视频| 婷婷中文字幕一区三区| 国产高清精品在线| 最近中文av字幕在线中文| 日韩 欧美 综合| 激情五月综合| 二区三区中文字幕| 日韩高清不卡| 午夜国产视频 | 最近免费中文字幕在线第一页| 日韩欧美色综合网站| 综合图区亚洲白拍在线| 精品亚洲综合| 国产 日韩 欧美 综合 一区| 在线视频国产三级| 日韩久久99| 欧美日韩一二三四| 精品久久人人做人人爽| 久久久久久91| 欧美日韩亚洲第一| 一二三区精品视频| 一区二区不卡久久精品| 国产黄在线播放| 国产视频三级在线观看播放| 成片免费观看| 精品视频在线视频| 日韩精品一二三四区| 欧美日韩国产专区| 综合激情国产一区| 欧美一卡2卡3卡4卡| 日韩欧美在线综合网| 精品人妻一区二区免费视频| 久久精品国产视频| 日韩视频专区| 欧美三级视频在线| 欧美日韩国产一二三| 久久综合久久综合九色| 国产九九在线| 亚洲一区三区在线观看| 精人妻一区二区三区| 日韩欧美国产不卡| 亚洲视频电影在线| 亚洲黄色一区二区| 中文字幕欧美人妻精品一区蜜臀| 欧美日韩国产首页在线观看| 国产在线拍偷自揄拍精品| 中文字幕久精品免费视频| 亚洲第一视频| 天天综合天天做| 日韩欧美中文在线| 欧美,日韩,国产在线| 一区免费在线| 亚洲成av人片| 国产不卡在线观看视频| 久久婷婷中文字幕| 亚洲免费在线视频一区 二区| 福利在线国产| 精品一二三区视频| 精品国产99久久久久久| 黄色在线播放网站| 国产黄色一区| 日韩美女中文字幕| 91精品日本| 国产在线不卡av| 国产午夜在线观看| 国产日韩精品在线| 亚洲 国产 欧美 日韩| 精品日韩在线播放| 日本免费在线视频不卡一不卡二| 亚洲一区在线观看网站| 国内不卡的二区三区中文字幕| 午夜高潮免费视频| 国产资源中文字幕| av午夜在线| 久久99久久久久| 国产高清视频一区二区| 一区二区视频在线| 最近中文字幕第一页| 欧美日韩国产首页| 欧美日韩在线三级| 精人妻一区二区三区| 婷婷中文字幕一区| 中文字幕在线导航| 91精品久久久久久久久| 91精品国产免费久久综合| 在线视频一区二区三区在线播放| 久久精品网站免费观看| 91久久大香伊蕉在人线| 国产欧美日韩视频在线| 视频在线一区二区| 91xxx在线观看| 久久精品免费看| 中文字幕在线视频精品| 亚洲区中文字幕| 激情婷婷亚洲| 精品视频www| 91精品久久久久久久久久入口| 天堂在线www天堂中文在线 | 国产区高清在线| 亚洲美女视频一区| 欧美日韩精品在线视频| 最近高清中文在线字幕在线观看| 日韩免费精品视频| 亚洲精品中文字幕乱码三区不卡| 欧美在线日韩在线| 国产免费播放一区二区| 国产乱国产乱300精品| 在线视频日韩欧美| 欧美日韩在线网站| 韩国av一区二区| www.老鸭窝.com| 亚洲一区中文字幕在线| 亚洲男人在线| 伊人国产视频| 欧美日韩国产中字| 色综合婷婷久久| 国产一二三四| 欧美三级一区二区三区| 午夜亚洲一区| 最近中文字幕在线中文视频| 日韩欧美中文字幕公布| 国产资源在线观看| 精品在线观看一区| 欧美三级视频在线| 91精品国产经典在线观看| 欧美日韩三级在线| 日韩不卡在线观看| 国产字幕中文| 国产小视频在线观看| 精品日韩欧美在线| 日韩精品视频网站| 中文字幕在线视频久| 国产欧美日韩中文字幕| 欧美日韩国产系列| 国产三级在线| 亚洲女人天堂a在线播放| 欧美一卡2卡三卡4卡5免费| 亚洲欧美伊人| 国产乱国产乱300精品| 在线观看免费国产小视频| 中文字幕在线视频网| 婷婷综合福利| 欧美 日韩 综合| 国产日韩1区| 欧美日韩一二三四| 日韩中文在线视频| 欧美日韩激情一区二区三区| 精品久久久网| 中文字幕无线码一区| 国产一区 二区 三区一级| 中文亚洲欧美| 国产视频1区| 欧美日韩乱国产| 高清中文字幕在线| 欧美另类久久久品| 在线视频你懂得一区| 国产欧美日韩视频在线| 欧美成人vr18sexvr| 中文字幕亚洲乱码| 欧美日韩国产免费| 国产九九在线| 日韩在线不卡一区| 中文字幕最新精品| 国产黄色小视频| 日韩精品免费视频一区二区三区| 先锋男人资源站| 国产一级网站视频在线| 国产在线导航| 日韩欧美在线综合网| 日韩免费看网站| www中文字幕| 国产高清在线一区| 欧美日韩在线视频免费观看 | 国产高清一级片| 亚洲а∨精品天堂在线| www.狠狠| 日韩高清不卡一区| 国产午夜精品一区二区三区视频| 一级片在线播放| 日韩在线视频一区| 激情久久99| 激情婷婷亚洲| 中文字幕伊人| 亚洲成年人在线播放| 99精品人妻国产毛片| 国内不卡的二区三区中文字幕| 在线观看av的网站| 伊人国产视频| 国产欧美高清在线| 日韩在线观看a| 久久激情一区| 国产一二三精品| 91精品国产乱码久久蜜臀| 亚洲三级中文字幕| 日韩中文字幕综合| 91精品视频在线| 欧洲精品二区| 91精品国产91久久久| 欧美日韩中文字幕在线| 中文字幕线观看| 在线观看一区| 国产成人精品免费网站| 精品在线99| 日韩在线小视频| 亚洲免费婷婷| 午夜私人影院在线观看| 国产欧美日韩在线视频| 91精品免费观看| 欧美日韩综合不卡| 中文字幕日韩视频| 日韩不卡在线播放| 精品乱人伦一区二区三区| 黄色国产在线| 精品久久九九| 中文字幕视频一区二区三区久| 国产乱码在线观看| 日韩在线一区二区| 婷婷中文字幕一区三区| 中文字幕欧美国内| 久本草在线中文字幕亚洲欧美| 韩国v欧美v日本v亚洲| 亚洲成a人片在线www| 精品在线99| 精品视频—区二区三区免费| 欧美国产一级片| 一区二区三区精品久久久| 日韩在线播放一区二区| 久草亚洲一区| 国产黄色一级片| 精品亚洲永久免费| 国产高清精品在线| 视频一区二区中文字幕| 久久99精品国产| 欧美1区免费| 欧美 中文字幕| 99精品人妻国产毛片| 日韩色在线观看| 日韩一级中文字幕| 精品乱人伦一区二区三区| 久久精品视频免费看| 一区在线视频观看| 91xxx在线观看| 不卡在线一区二区| 国产 欧美 日韩 在线| 91九色精品视频| 一区二区欧美国产| 国产拍揄自揄精品视频麻豆| 亚洲女人天堂色在线7777| 在线三级av| 日韩在线二区| 国产一卡2卡3卡四卡网站| 日韩欧美成人一区二区三区| 日韩不卡一二区| 91精品国产综合久久香蕉最新版| 日韩欧美在线精品| 精品国产99| 午夜国产福利一区二区| 九色蝌蚪视频在线| 在线综合 亚洲 欧美中文字幕| 亚洲专区一区| 一区二区高清在线| 欧美日韩中国免费专区在线看| 精品日韩99亚洲| 蜜桃久久久久| 精品久久久精品| 国产日韩av高清| 刘玥91精选国产在线观看| 一区二区三区在线不卡| www.中文字幕在线| 一区二区在线视频播放| 在线综合 亚洲 欧美中文字幕| 欧美日韩亚洲国内综合网俺| 国产一二三区精品视频| 亚洲视频在线观看三级| 久久精品国产99| 久久99久久久欧美国产| 国产日韩av一区| 国产在线小视频| 99pao成人国产永久免费视频| 中文字幕在线官网| 国产成人精品999| 91精品在线观| 国产在线观看色| 亚洲美女视频一区| 国产无套粉嫩白浆在线2022年 | 亚洲视频色图| 亚洲综合视频一区| 国产超级va在线视频| 欧美精选午夜久久久乱码6080| 91精品国产自产观看在线| 日韩欧美国产亚洲| 黄色国产在线| 国产wwww| www.尤物.com| 中文字幕亚洲在| 伊人伊成久久人综合网小说| 日韩精品视频免费| 日韩视频一区| 一区二区三区精品99久久| 日韩高清在线不卡| 日韩精品国产欧美| 中文字幕欧美在线| 欧美一级免费看| 中文字幕 欧美日韩| 99pao成人国产永久免费视频| 国产午夜精品一区二区三区视频| 91精品国产91综合久久蜜臀| 91精品国产91| 国产一级在线| 成年人黄国产| 日韩av一区在线| 中文字幕4区| 日韩激情一区| 日韩免费不卡avV| 天堂√8在线中文| 欧美日韩久久久| 日韩.com| 人成免费在线视频| 日韩精品资源二区在线| 国产91久久久久| 欧美日韩精品综合| 色综合天天综合网天天狠天天| 中文字幕精品视频| 亚洲国产无线乱码在线观看 | 久久精品国产成人一区二区三区| 欧美三级三级三级爽爽爽| 麻豆一区二区99久久久久| 亚洲一区日韩在线| 视频一区二区中文字幕| 精品在线网站观看| 日韩精品在线网站| 欧美一级久久| 欧美另类专区| 一区二区高清在线| 精品日韩欧美| 区日韩二区欧美三区| 顶级网黄在线播放| 欧美国产三级| 国产成人精品免费在线| 日韩亚洲不卡在线| 91最新在线| 国产成人精品免费在线| 日韩精品在线视频观看| 91久久精品国产91性色69| 91精品国产高清91久久久久久| 久久精品国产99| 日韩精品视频中文字幕| www.久久久精品|