Opencart如何在php循环中添加语言文件中的所有内容
有没有一种方法可以通过Opencart从一种语言中读取所有内容 目前,我必须:Opencart如何在php循环中添加语言文件中的所有内容,opencart,Opencart,有没有一种方法可以通过Opencart从一种语言中读取所有内容 目前,我必须: Controller $this->load->language('help'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->data['tab1'] = $this->language->get('tab1'); 语言文件 &l
Controller
$this->load->language('help');
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['tab1'] = $this->language->get('tab1');
语言文件
<?php
// Heading
$_['heading_title'] = 'Help';
$_['tab1'] = 'Account';
?>
最简单的方法是在控制器顶部使用数组合并
$this->data = array_merge($this->data, $this->language->load('language/file'));
或者干脆
$this->data += $this->language->load('language/file');
编辑
对于2.x,使用
$data=array\u merge($this->data,$this->language->load($language/file))代码>
3.x在system/library/language中自动执行此操作
函数以获取所有调用all()的内容
以下是获取单个项目的方法:
$var = $this->language->get('heading_title');
这将返回包含所有语言项的数组:
$var = $this->language->all();
你为什么要这样做?这会污染你的$this->data数组。我想到了这一点,并将所有内容添加到$this->data['language'],以防止任何内容被覆盖。我认为应该添加到opencart的核心,在控制器类中,或者改进它自己的语言类。如果你在控制器顶部这样做,那么它就不会“污染”你的数据数组。事实上,现在很多开发人员都是这样做的,包括我自己,对于在更新版本的OpenCart中工作的任何人:同样的方法适用于2.x,使用$data
(而不是$This->data
)。从3.x开始,行为是自动的。谢谢@Mavelo-我已经更新了答案accordingly@JayGilford不客气。在OC2.x中,我喜欢使用$data=$this->load->language('extension/module/customer\u sale\u popup')
只要在对$data
:)进行任何其他更改之前完成即可@Mavelo是的,我自己也会这么做注意:语言::all()
在1.5.x中不可用。根据类代码中的“dont use”注释,在2.x中不鼓励使用它。但是,该函数在3.x中仍然存在,并已在ControllerEventLanguage::before()的核心中使用,因此显然它将继续存在:P