久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

yii2學習教程之5種內置行為類詳解

這篇文章主要給大家介紹了關于yii2學習教程之5種內置行為類的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用yii2具有一定的參考學習價值,需要的朋友們下面跟著

前言

眾所周知學習所有知識都需要循序漸進,行為也是一樣,在我們學會很牛逼的新建行為,然后輕松注入到組件類之前,先看看yii2框架為我們準備的5個內置的行為類,也許你剛要用到~話不多說了,來一起看看詳細的介紹:

本節的目的是讓各位小伙伴在使用過程中對行為有一個整體上的感覺。

先亮亮相

  • TimestampBehavior
  • SluggableBehavior
  • BlameableBehavior
  • AttributeTypecastBehavior
  • AttributeBehavior

網上很多文章只是講解了其中的 TimestampBehavior ,我們把這些都講下。

TimestampBehavior

自動更新模型對應數據表中的創建時間(created_at)與更新時間(updated_at)字段。

為了方便學習,我建立了一個member表,結構如下

yii2學習教程之5種內置行為類詳解

對于 created_at 和 updated_at 字段的更新,我想讓 TimestampBehavior 幫我去做,看看如何進行?

第一步

設置模型,在member表對應的模型Member中,我需要先進行如下設置

# app\models\Member
namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;
class Member extends \yii\db\ActiveRecord {
 ...
 public function behaviors(){
  return [
   [
    'class'=>TimestampBehavior::className(),
    'attributes'=>[
     ActiveRecord::EVENT_BEFORE_INSERT => ['created_at','updated_at'],
     ActiveRecord::EVENT_BEFORE_UPDATE => ['created_at'],
    ]
   ]
  ];
 }
 ...
}

從代碼上看,啟動了兩個事件,要注意的事這個事件在rules驗證之后,如果rules沒有通過,則無效。

第二步

接下來我們在action中使用它,為了讓例子更好玩一點,我用了控制臺模式。

namespace app\commands;

use yii\console\Controller;
use app\models\Member;

class MemberController extends Controller{

 public function actionIndex(){
  $model = new Member();
  $model->username = 'abei';
  if($model->save() == false){
   var_dump($model->getErrors());
  }

  var_dump($model->toArray());
 }
}

下面看看var_dump的 $model中created_at 和 updated_at 是否有數據?

yii2學習教程之5種內置行為類詳解

對于結果我想你是喜歡的,通過增加了對行為的關聯進而為Member類增加了時間的填充功能,不單單如此,TimestampBehavior 還提供了一個有趣的touch函數,使用它能將當前時間戳賦值給指定屬性并保存到數據庫。

可能這個方法的使用更靠近你腦海中的行為。

$member->touch('do_time');

Member本身并沒有touch函數,因被 TimestampBehavior 注入而擁有了touch方法,相比較自己寫一個方法,行為可以注入到很多個類中,復用率非常高。

AttributeBehavior

接下來我們來講解yii2的第二個行為類,如果你細心觀察,應該能發現上面好幾個行為類都繼承于此類,那么該類的使用方法是什么那?它支持在AR事件觸發時自動修改它的屬性。

我們假設一種場景,還是上面的那個member數據表,我們為其增加一個token字段,該字段的值被數據生成時初始化,值為username的md5值,這個事情在所有member初始化時候都會發生,現在用AttributeBehavior來搞定它。

第一步設置Member模型

還是在它的 behaviors 方法中,我們如下設置

// app\models\Member.php
namespace app\models;

use Yii;
use yii\behaviors\AttributeBehavior;
use yii\db\ActiveRecord;

class Member extends \yii\db\ActiveRecord {

 public function behaviors(){
  return [
   [
    'class' => AttributeBehavior::className(),
    'attributes' => [
     ActiveRecord::EVENT_BEFORE_INSERT => 'token',
    ],
    'value' => function ($event) {
     return md5($this->username);
    },
   ],
  ];
 }
}

我們依然使用上面例子第二步的action代碼,不做任何改動,看看行為對所注入類的功能增強。

yii2學習教程之5種內置行為類詳解

SluggableBehavior

下面來說說 SluggableBehavior 這個行為類,網上很少有人講過它,我們不落下。

使用 SluggableBehavior 可以讓我們的URL美化更加語義化。

還是上面的例子,如果我們想通過url獲得某一個會員的信息,一般是這樣寫 http://abc.com/index.php?r=me...

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了phpstorm 正則匹配刪除空行、注釋行,需要的朋友可以參考下
這篇文章主要介紹了Thinkphp5行為使用方法匯總,需要的朋友可以參考下
Yii2的rule用于對模型屬性進行驗證,scenario用戶定義不同場景下需要驗證的模型,下面這篇文章主要給大家介紹了關于Yii2中場景(scenario)和驗證規則(rule)的相關資料,文中通過示例代碼介
本篇文章主要介紹了淺談使用 Yii2 AssetBundle 中 $publishOptions 的正確姿勢,具有一定的參考價值,感興趣的小伙伴們可以參考一下
這篇文章主要介紹了Yii2之組件的注冊與創建的實現方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
這篇文章主要介紹了Yii2使用駝峰命名的形式訪問控制器的實現方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
主站蜘蛛池模板: 亚洲一区不卡 | 国产午夜精品一区二区三区 | 欧洲成人免费视频 | 久久成人人人人精品欧 | 成人在线看片 | 操操网站 | 亚洲www啪成人一区二区 | av激情在线| 国产免费福利小视频 | 久久久久久网站 | 中文字幕不卡视频在线观看 | 欧美综合一区 | 日本三级网站在线观看 | 国产视频久 | 激情五月婷婷综合 | 亚洲三区视频 | 在线视频一区二区三区 | 国产亚洲一区二区精品 | 免费的色网站 | av网站在线播放 | 国产精品一区二区在线 | 国产精品一区在线观看 | 黄色毛片免费 | 超碰97人人人人人蜜桃 | 日韩欧美一区二区在线播放 | 一本一道久久a久久精品综合蜜臀 | 国产片一区二区三区 | 国产精品成人一区二区三区 | 日本不卡一区二区三区在线观看 | 福利片一区二区 | 久久久久久久综合色一本 | 蜜桃av鲁一鲁一鲁一鲁 | 春色av| 又黑又粗又长的欧美一区 | 国产色片 | 日韩在线小视频 | 一级免费毛片 | 久久激情视频 | 亚洲欧美一区二区三区在线 | 久久久激情视频 | 欧美黄色片在线观看 |