Opencart如何在php循环中添加语言文件中的所有内容

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

有没有一种方法可以通过Opencart从一种语言中读取所有内容

目前,我必须:

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