- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我打开了 yii 语言本地化,所以我在配置中使用 'language'=>'en',
并编写类似 Yii::t('layouts_main','Home')
的内容并将 Home
的翻译存储在 php 文件中。但除此之外,我还有表格,里面有不同语言的数据。例如,我有一个必须以不同语言存储在 mysql 表中的国家/地区列表。表结构非常简单:id, name_en,name_de,name_es
等...我是这样做的,所以如果语言发生变化,那 2 个字母必须控制从哪个 sell 读取名称。
在我的 Controller 中,我将数据从表获取到数组
$tableCountry = Country::model()->findAll();
然后我正在制作这样的变量,它将包含 "name+"
语言变量,它在配置中是 'en'
$name_lang ="name_".Yii::app()->语言;
所以现在我创建了包含 name_en
的变量 $name_lang
然后我使用 $name_lang
变量选择正确的销售
$list=CHtml::listData($modelCountry,'id',$name_lang);
仅使用 $name_lang name_en 数据将进入列表。所以稍后我可以将配置文件中的语言设置切换为“de”,只有 name_de 数据会 fgo 到列表。
所以这里一切都很好。但是如果我有包含 country_name_en、city_name_en、region_name_en 等的复杂表怎么办...
要将这些数据放入列表中,我必须创建 3 个或更多变量
$country_name_lang ="country_name_".Yii::app()->语言;
$city_name_lang ="city_name_".Yii::app()->语言;
$region_name_lang ="region_name_".Yii::app()->语言;
所以我想知道是否还有其他更好的方法来做这些事情?
最佳答案
选项 1:您可以在模型中定义另一个名为 country_name 的变量(没有任何后缀)。您可以在模型中执行此操作,而不必在数据库中也创建一个字段。这个变量不需要验证或任何东西。然后在您可以执行的模型查找方法之后
public function afterFind()
{
$this->country_name = $this->{"country_name_".Yii::app()->Language};
}
请随意在此处添加所有内容。
现在你应该可以在任何地方使用 $model->country_name 而无需关心语言是什么。
选项 2 是使用魔术方法。您可以在这里阅读更多内容:http://www.php.net/manual/en/language.oop5.magic.php为您的模型定义这样一个方法:
public function __call($name, $arguments)
{
if(isset($this->{$name. "_".Yii::app()->Language}))
return $this->{$name. "_".Yii::app()->Language}
elseif(isset($this->$name))
return $this->{$name}
else
throw new Exception(xxx, 'We couldn\'t find the variable');
}
现在您应该可以使用 $model->country_name() 并且您将再次获得正确语言的变量。您也可以使用 $model->id() 并且您也会获得正确的 ID,因为如果没有 id_en 字段,它有一个后备。
关于php - yii语言本地化mysql表数据进入 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22078268/
目前我的后端和前端都有 2 个 Yii 安装设置。但是在处理这个问题时,它会变得有点困惑,我想知道这是否以正确的方式完成。下面是如何设置我的文件夹结构的示例。 - backend - assets
如何禁用通知,我在 idex.php 中尝试但通知是回声,我如何禁用它。 在 php.ini 最佳答案 更新 public/index.php
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '' => array('site/page/vie
从 Yii 到 Yii 2.0 这行代码怎么写: Yii::app()->getRequest()->getRestParams() ? 最佳答案 在我看来,相当于 Yii::app()->getRe
我想使用多个调用构建查询,但在使用此代码时出现错误 $command = Yii::app()->db->createCommand() ->select('*') ->from('{
Yii中我的模型规则函数中的以下代码 public function rules() { // NOTE: you should only define rules for those att
我正在开发一个带有主数据库和多个数据库的系统,每个客户端一次。当客户填写并提交包含所有必需详细信息的表单时,将创建客户数据库及其表。 我的问题:Yii 框架是否支持动态创建数据库和表?如果是这样,是否
我知道我可以在 Yii 中注册一个新的元标记并且我知道怎么做,但是我需要 替换我设置的默认标签,因为当我在一篇文章时,我想插入 元标记中文章的简短描述; 如何管理元标记? 最佳答案 如果您使用的是最新
我尝试仅在管理模块中加载 Yii Bootstrap 扩展,但它不起作用。我假设我需要预加载它或以某种方式启动它......谢谢! class AdminModule extends CWeb
我已经建立了新的 Yii2 项目。现在我想 reorganize folder structure在“public”和“app”两个文件夹中(实际上代表 protected 文件)。 框架中的所有代码
页面 Controller 访问规则: public function accessRules() { $isadmin = User::loadUser(
代理人: agent_id (primary key) 用户: f_id (foreign key) type 我以这种方式创建了关系 public function relations() {
大家好,感谢阅读。 我想知道如何将数字格式化为货币,或者只是在末尾附加 €。我在 yii 框架的管理页面上的 gridview 中工作。 我有这个,例如 'columns'=>array(
如何禁用 Yii 的内置身份验证? (/site/login ). 我正在使用扩展程序进行身份验证并且不想让内置登录保持打开状态 - 这可能是一个安全问题。 最佳答案 我认为您可以删除站点 Contr
使用 Yii,我想删除所有不是今天的行。 我的解决方案好吗? $query = "delete from `user_login_hash` where `day`!='".(date('Y-m-d'
gridview yii如何在一列数组值中显示两个关系值 在我的模型代码中有关系 $criteria->compare('exp.ExperienceYear',$this->Experience,
是他们对的任何常用方法吗?为我的 yii 项目添加扩展 ? 如何向我的 yii 添加扩展名 请解释 步骤 最佳答案 “ 应用程序配置 ”在安装扩展时起着重要作用。默认情况下,此配置将位于 php 文件
如何在 yii 中使用场景禁用文本字段?我有 3 类帐户 super 管理员、管理员和普通用户。所有 3 类用户都有权更新有关他们的信息,但其中一个字段 accountId 只能由 super 管理员
我在 yii 中找不到太多关于将默认范围应用于模型的文档,我想知道是否有人可以解释或指出我正确的方向。 我的问题的快速版本: 是否可以向默认范围添加关系,或者默认情况下向模型上的每个 AR 搜索添加“
我是一名优秀的程序员,十分优秀!