/** * @param ActiveRecord $object * * @return string */ public static function niceUrlTo(ActiveRecord $object) { /** @var Language $language */ $language = Language::findOne(['symbol' => \Yii::$app->language]); /** @var NiceUrl $niceUrl */ $niceUrl = NiceUrl::findOne(['object_class' => get_class($object), 'object_id' => $object->id, 'language_id' => $language->id, 'redirect' => 0]); return sprintf('%s', $niceUrl->url); }
/** * @return bool */ public function beforeValidate() { if (is_null(Language::getDefault()) == false) { $this->addError('default', '`language.default_already_exists`'); } return parent::beforeValidate(); // TODO: Change the autogenerated stub }
/** * process nice url for request */ public static function process() { $request = \Yii::$app->getRequest(); /** @var Language $language */ $language = Language::findOne(['symbol' => \Yii::$app->language]); $niceUrlProcessor = new RequestProcessor($language, new Finder()); list($route, $params) = $niceUrlProcessor->processRequest($request); $routes = array_merge([$route], $params); \Yii::$app->catchAll = $routes; }
/** * @param string $field * @param array $rules * @return array */ public static function process($field, $rules) { $languages = Language::find()->all(); $fields = []; /** @var Language $language */ foreach ($languages as $language) { $fields[] = $field . '__' . $language->symbol; } $fields = array_merge([$fields], $rules); return $fields; }
public function createCategory() { $cols['id'] = 'pk'; foreach (Language::find()->all() as $lang) { $name = LanguageHelper::processForLang('name', $lang); $cols[$name] = "varchar(255) DEFAULT NULL"; } $cols['ordering'] = 'int(11) DEFAULT NULL'; $options = 'ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8'; $query = $this->db->getQueryBuilder(); $createTableSyntax = $query->createTable('core_category', $cols, $options); $this->db->createCommand($createTableSyntax)->execute(); }
protected function createTable() { $cols['id'] = 'pk'; $cols['created_at'] = 'datetime NOT NULL'; foreach (Language::find()->all() as $lang) { $title = LanguageHelper::processForLang('title', $lang); $cols[$title] = "varchar(255) NOT NULL"; $body = LanguageHelper::processForLang('body', $lang); $cols[$body] = "longtext"; } $options = "ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $query = \Yii::$app->getDb()->queryBuilder; $createTableSyntax = $query->createTable('page', $cols, $options); $db = \Yii::$app->getDb(); $db->createCommand($createTableSyntax)->execute(); }
public static function langSwitcher() { $languages = Language::find()->all(); $html = '<div class="pull-right langs">'; $i = 0; /** @var Language $language */ foreach ($languages as $language) { $currentLang = \Yii::$app->language; $currentClass = $currentLang == $language->symbol ? ' class="current"' : ''; $lang = $language->symbol == 'en' ? 'gb' : $language->symbol; $langIco = $flag = Flags::widget(['flag' => $lang, 'type' => Flags::SHINY_16, 'useSprite' => false]); $html .= '<a href="#" data-src="' . $language->symbol . '"' . $currentClass . '>' . $langIco . '</a>'; $i++; } $html .= '</div>'; return $html; }
/** * @return bool */ public function beforeValidate() { if ($this->fillEmptyFields) { $sql = "SELECT symbol FROM language"; $langs = \Yii::$app->getDb()->createCommand($sql)->queryAll(PDO::FETCH_COLUMN); $defaultLang = Language::getDefault(); unset($langs[array_search($defaultLang->symbol, $langs)]); // now contains langs without defaultLang foreach ($this->getMultiLangFields() as $field) { $defaultField = $this->buildMultilangFieldName($field, $defaultLang->symbol); foreach ($langs as $lang) { $field = $this->buildMultilangFieldName($field, $lang); if (!$this->{$field}) { // copy value from default language to current one $this->{$field} = $this->{$defaultField}; } } } } return parent::beforeValidate(); // TODO: Change the autogenerated stub }
/** * @return \yii\db\ActiveQuery */ public function getLanguage() { return $this->hasOne(Language::className(), ['id' => 'language_id']); }
public function __construct(SlugCounterInterface $slugCounter) { $this->languages = Language::find()->all(); $this->slugCounter = $slugCounter; }