ZF2 Super Globals或替代品

时间:2014-06-07 18:13:13

标签: php templates module zend-framework2

我正致力于发展动荡。这种情感通常包含多个设计,我希望能够根据环境/设计来定义视图脚本。

首先我想使用超级全局,但在网上阅读后,其他开发人员告诉你不要使用它。

我想问一下

我应该以什么方式这样做?

我的想法是定义一个超级全局(仍然不确定如何),如:

somefile

$url = $_SERVER['HTTP_HOST'];
$splitdomain = explode(".",$url);
define('__SUBDOMAIN__', $splitdomain[0]);

然后在模块配置

'view_manager' => array(
    'template_path_stack' => array(
        __SUBDOMAIN__.'/'.__NAMESPACE__.'/view/',
        __DIR__ . '/../view',
    ),
),

1 个答案:

答案 0 :(得分:0)

为了跟踪配置,并按照建议的做法添加

$url = $_SERVER['HTTP_HOST'];
$splitdomain = explode(".",$url);
define('__SUBDOMAIN__', $splitdomain[0]);
define('__THEME__', $splitdomain[0]);

位于application.config.php。

的顶部

我改变了

'config_glob_paths' => array(
    'config/autoload/{,modules/*/}{,*.}{global,local}.php',
),

(我自己想要更容易地跟踪模块) 然后我创建了

config/modules/Application/local.php

这里我添加了设计模板,布局等的解析。

<?php

namespace Application;

/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
 * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

return array(
    'view_manager' => array(
        'display_not_found_reason' => true,
        'display_exceptions'       => true,
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../../../../../views/designs/'.__THEME__.'/'.__NAMESPACE__.'/layout/layout.phtml',
            'application/index/index' => __DIR__ . '/../../../../../views/designs/'.__THEME__.'/'.__NAMESPACE__.'/index/index.phtml',
            'error/404'               => __DIR__ . '/../../../../../views/designs/'.__THEME__.'/'.__NAMESPACE__.'/error/404.phtml',
            'error/index'             => __DIR__ . '/../../../../../views/designs/'.__THEME__.'/'.__NAMESPACE__.'/error/index.phtml',
        ),
        'template_path_stack' => array(
            __DIR__ . '/../../../../views/designs/'.__THEME__.'/'.__NAMESPACE__.'/',
        ),
    ),
);

然后我对其他模块做了同样的事情,这样我就可以为不同的客户端分离设计而无需部署整个系统。