Php OpenCart:如何生成全局变量?
我试图在OpenCart中创建两个全局变量。我基本上希望能够在我的Php OpenCart:如何生成全局变量?,php,variables,opencart,Php,Variables,Opencart,我试图在OpenCart中创建两个全局变量。我基本上希望能够在我的.tpl文件中声明它们 <?php echo $global1; ?> 更新 /catalog/controller/common/header.php <?php class ControllerCommonHeader extends Controller { protected function index() { // NEW GLOBAL VARS
.tpl
文件中声明它们
<?php echo $global1; ?>
更新
/catalog/controller/common/header.php
<?php
class ControllerCommonHeader extends Controller {
protected function index() {
// NEW GLOBAL VARS
$cdnDefault="//www.gorgeouscouturedev.com/catalog/view/theme/";
$currentUseLang = $this->language->get('code');
<?php
class ControllerCommonHeader extends Controller {
protected function index() {
// NEW GLOBAL VARS
$GLOBALS["cdnDefault"]="//www.gorgeouscouturedev.com/catalog/view/theme/";
$GLOBALS["currentUseLang"] = $this->language->get('code');
如果您只是想使用一个静态值,您可以使用一个常量。只需在config.php文件中创建一个,如 然后您可以使用
<?php echo CDN_URL; ?>
应用程序中的任何位置。如果您想像在编辑的问题中那样对其进行编码,那么代码的基本缺陷是您在控制器文件中使用了$cdnDefault
而不是$this->data['cdnDefault']
,从而导致了未定义的问题。但是请注意,这个变量一点也不是全局变量,它只是按照应该的方式进行编码
我认为,正确的方法是创建一个新的设置值,供您在管理区域的
SYSTEM>SETTINGS
中编辑,然后使用$this->config->get('config_value_here')调用它
您可以使用$GLOBALS
超级全局数组,而不是采用被认为更快速的黑客攻击方法
例如,首先在controller/common/header.php
$GLOBALS["1"] = "test";
然后在任何tpl文件中使用它,如
<?php echo $GLOBALS["1"]; ?>
更新问题的答案
/catalog/controller/common/header.php
<?php
class ControllerCommonHeader extends Controller {
protected function index() {
// NEW GLOBAL VARS
$cdnDefault="//www.gorgeouscouturedev.com/catalog/view/theme/";
$currentUseLang = $this->language->get('code');
<?php
class ControllerCommonHeader extends Controller {
protected function index() {
// NEW GLOBAL VARS
$GLOBALS["cdnDefault"]="//www.gorgeouscouturedev.com/catalog/view/theme/";
$GLOBALS["currentUseLang"] = $this->language->get('code');
您可以使用$\u会话变量我也考虑过这一点,但我将如何实现它。当我仅仅使用非会话变量时,我对使用SESSION
变量没有信心。我不想为此开个会。杰,谢谢你的回复。我明确提到我不想使用会话,它将始终是一个静态变量,它是CDN URL,因此不是用户驱动的。你能告诉我我将把会话放在哪里(供将来使用)以及你对字符串的建议吗?我将如何添加新的系统设置值?你的意思是为管理面板构建一个插件,然后是?使用vQmod生成一个额外的字段,并将必要的控制器代码等放在设置位置。我不打算详细说明具体是如何实现的,这是一种很容易从代码本身获取信息的方法,我相信web上已经有了一些示例
<?php echo $GLOBALS["1"]; ?>
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
<?php
class ControllerCommonHeader extends Controller {
protected function index() {
// NEW GLOBAL VARS
$GLOBALS["cdnDefault"]="//www.gorgeouscouturedev.com/catalog/view/theme/";
$GLOBALS["currentUseLang"] = $this->language->get('code');
<?=$header?>
<?=$column_left?>
<?=$column_right?>
<div id="content">
<? echo $GLOBALS["cdnDefault"]; ?>
<? echo $GLOBALS["currentUseLang"]; ?>
<?=$content_top?>
<div class="flexslider">
<ul class="slides">
<li><img src="catalog/view/theme/default/image/desktop.png"/></li>
<li><img src="catalog/view/theme/default/image/blogger.png"/></li>
</ul>
</div>
<?=$content_bottom?>
</div>
<?=$footer?>