yii\i18n\DbMessageSource::init PHP Method

init() public method

This method will initialize the [[db]] property to make sure it refers to a valid DB connection. Configured [[cache]] component would also be initialized.
public init ( )
    public function init()
    {
        parent::init();
        $this->db = Instance::ensure($this->db, Connection::className());
        if ($this->enableCaching) {
            $this->cache = Instance::ensure($this->cache, Cache::className());
        }
    }

Usage Example

 /**
  * Initializes the DbMessageSource component.
  */
 public function init()
 {
     parent::init();
     if ($this->autoInsert) {
         $this->on(static::EVENT_MISSING_TRANSLATION, function ($event) {
             if (!isset($this->messagesId[$event->message])) {
                 $query = new Query();
                 $id = $query->select("id")->from($this->sourceMessageTable)->where(['category' => $event->category, 'message' => $event->message])->scalar($this->db);
                 if ($id === false) {
                     $this->db->createCommand()->insert($this->sourceMessageTable, ['category' => $event->category, 'message' => $event->message])->execute();
                     $id = $this->db->lastInsertID;
                 }
                 /* @var $i18n I18N */
                 $i18n = Yii::$app->i18n;
                 $languages = $i18n->getLanguages();
                 foreach ($languages as $language_id => $language) {
                     $query = new Query();
                     $exists = $query->from($this->messageTable)->where(['id' => $id, 'language_id' => $language_id])->exists($this->db);
                     if (!$exists) {
                         $this->db->createCommand()->insert($this->messageTable, ['id' => $id, 'language_id' => $language_id, 'translation' => ''])->execute();
                     }
                 }
                 $this->messagesId[$event->message] = $id;
             }
             $event->translatedMessage = $event->message;
         });
     }
 }