bessonov87 / yii2-mongodb-multilingual-behavior
yii2-mongodb-multilingual-behavior for mongodb
dev-master
2016-03-10 10:33 UTC
Requires
- yiisoft/yii2: *
- yiisoft/yii2-mongodb: ~2.0
This package is not auto-updated.
Last update: 2024-09-20 18:36:12 UTC
README
Yii2 MongoDb 的 yii2-multilingual-behavior 端口。
此行为允许您创建多语言模型,并且几乎可以像使用普通模型一样使用它们。翻译存储在数据库中的单独表中(例如:PostLang 或 NewsLang),每个模型一个,因此您可以轻松地添加或删除语言,而无需修改您的数据库。
示例
如果您在 find() 查询中使用 multilingual(),则每个模型的翻译都作为虚拟属性(title_en、title_fr、title_de 等)加载。
$model = Post::find()->multilingual()->one(); echo $model->title_en; //echo "English title" echo $model->title_fr; //echo "Titre en Français"
安装
安装此扩展的首选方法是使用 composer。
运行以下命令之一:
php composer.phar require --prefer-dist bessonov87/yii2-mongodb-multilingual-behavior
或将其添加到您的 composer.json 文件的 require 部分:
"bessonov87/yii2-mongodb-multilingual-behavior": "*"
行为属性
加粗的属性是必需的
用法
以下是一个基础 'news' 表的示例
将此行为附加到模型(示例中的 News)。注释字段具有默认值。
public function behaviors() { return [ 'ml' => [ 'class' => MultilingualBehavior::className(), 'languages' => [ 'en-US' => 'English', 'de' => 'German', ], //'languageField' => 'language', //'localizedPrefix' => '', //'requireTranslations' => false', //'dynamicLangClass' => true', //'langClassName' => PostLang::className(), // or namespace/for/a/class/PostLang 'defaultLanguage' => 'en', 'langForeignKey' => 'post_id', 'tableName' => "newsLang", 'attributes' => [ 'title', 'text', ] ], ]; }
然后您必须覆盖模型中的 find() 方法
public static function find() { return new MultilingualQuery(get_called_class()); }
由于此行为具有 MultilingualTrait,您可以在查询类中使用它
namespace app\models; use yii\mongodb\ActiveQuery; class MultilingualQuery extends ActiveQuery { use MultilingualTrait; }
表单示例
//title will be saved to model table and as translation for default language $form->field($model, 'title')->textInput(['maxlength' => 255]); $form->field($model, 'title_en')->textInput(['maxlength' => 255]);