Zend framework2 从视图(phtml)访问local.php或global.php?

Zend framework2 从视图(phtml)访问local.php或global.php?,zend-framework2,Zend Framework2,我想为整个应用程序的每次更新都在local或global.php中输入一个google analytics账号。但是,我不知道如何从视图访问它。我是做错了,还是有办法做到这一点?我想要避免的是把东西放到每个控制器中去传递它。我只是希望布局能够抓住它 如果有更好的解决办法,我洗耳恭听 谢谢 如果您只有一个用于所有页面的代码,那么您可能可以在布局视图中硬编码所有分析代码,因此所有模块视图都会有该代码 如果您不想硬编码,或者您不想在所有页面中都包含代码,或者您有一组不同的布局文件,那么我认为您最好创建

我想为整个应用程序的每次更新都在local或global.php中输入一个google analytics账号。但是,我不知道如何从视图访问它。我是做错了,还是有办法做到这一点?我想要避免的是把东西放到每个控制器中去传递它。我只是希望布局能够抓住它

如果有更好的解决办法,我洗耳恭听


谢谢

如果您只有一个用于所有页面的代码,那么您可能可以在布局视图中硬编码所有分析代码,因此所有模块视图都会有该代码

如果您不想硬编码,或者您不想在所有页面中都包含代码,或者您有一组不同的布局文件,那么我认为您最好创建一个ViewHelper

我试着从一开始就解释一下,以防这是你第一次这样做

首先,创建一个模块,我称之为Utils

在modules src中,您可以创建一个文件夹Utils\View\Helper,并在那里使用类Analytics创建一个文件Analytics.php,如下所示:

<?php

namespace Utils\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\Mvc\Controller\Plugin\FlashMessenger as FlashMessenger;

class Analytics extends AbstractHelper
{
    var $code = null;

    public function setCode($code)
    {
        $this->code = $code;
    }

    public function __invoke()
    {
        ob_start();
        ?>
    <!-- analytics-->
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', '<?=$this->code?>']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script');
            ga.type = 'text/javascript';
            ga.async = true;
            ga.src = 'http://www.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(ga, s);
        })();

    </script>
    <!-- end analytics-->
    <?php

        return ob_get_clean();
    }

}

?>
现在,在视图中,您只需调用

echo $this->analytics();

框架将搜索工厂、创建对象、指定值并调用invoke方法,以将完整代码返回到视图中。就这些。写一次,到处跑

如果您只有一个用于所有页面的代码,那么您可能可以在布局视图中硬编码所有分析代码,因此所有模块视图都会有该代码

如果您不想硬编码,或者您不想在所有页面中都包含代码,或者您有一组不同的布局文件,那么我认为您最好创建一个ViewHelper

我试着从一开始就解释一下,以防这是你第一次这样做

首先,创建一个模块,我称之为Utils

在modules src中,您可以创建一个文件夹Utils\View\Helper,并在那里使用类Analytics创建一个文件Analytics.php,如下所示:

<?php

namespace Utils\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\Mvc\Controller\Plugin\FlashMessenger as FlashMessenger;

class Analytics extends AbstractHelper
{
    var $code = null;

    public function setCode($code)
    {
        $this->code = $code;
    }

    public function __invoke()
    {
        ob_start();
        ?>
    <!-- analytics-->
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', '<?=$this->code?>']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script');
            ga.type = 'text/javascript';
            ga.async = true;
            ga.src = 'http://www.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(ga, s);
        })();

    </script>
    <!-- end analytics-->
    <?php

        return ob_get_clean();
    }

}

?>
现在,在视图中,您只需调用

echo $this->analytics();

框架将搜索工厂、创建对象、指定值并调用invoke方法,以将完整代码返回到视图中。就这些。写一次,到处跑

如果您只有一个用于所有页面的代码,那么您可能可以在布局视图中硬编码所有分析代码,因此所有模块视图都会有该代码

如果您不想硬编码,或者您不想在所有页面中都包含代码,或者您有一组不同的布局文件,那么我认为您最好创建一个ViewHelper

我试着从一开始就解释一下,以防这是你第一次这样做

首先,创建一个模块,我称之为Utils

在modules src中,您可以创建一个文件夹Utils\View\Helper,并在那里使用类Analytics创建一个文件Analytics.php,如下所示:

<?php

namespace Utils\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\Mvc\Controller\Plugin\FlashMessenger as FlashMessenger;

class Analytics extends AbstractHelper
{
    var $code = null;

    public function setCode($code)
    {
        $this->code = $code;
    }

    public function __invoke()
    {
        ob_start();
        ?>
    <!-- analytics-->
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', '<?=$this->code?>']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script');
            ga.type = 'text/javascript';
            ga.async = true;
            ga.src = 'http://www.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(ga, s);
        })();

    </script>
    <!-- end analytics-->
    <?php

        return ob_get_clean();
    }

}

?>
现在,在视图中,您只需调用

echo $this->analytics();

框架将搜索工厂、创建对象、指定值并调用invoke方法,以将完整代码返回到视图中。就这些。写一次,到处跑

如果您只有一个用于所有页面的代码,那么您可能可以在布局视图中硬编码所有分析代码,因此所有模块视图都会有该代码

如果您不想硬编码,或者您不想在所有页面中都包含代码,或者您有一组不同的布局文件,那么我认为您最好创建一个ViewHelper

我试着从一开始就解释一下,以防这是你第一次这样做

首先,创建一个模块,我称之为Utils

在modules src中,您可以创建一个文件夹Utils\View\Helper,并在那里使用类Analytics创建一个文件Analytics.php,如下所示:

<?php

namespace Utils\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\Mvc\Controller\Plugin\FlashMessenger as FlashMessenger;

class Analytics extends AbstractHelper
{
    var $code = null;

    public function setCode($code)
    {
        $this->code = $code;
    }

    public function __invoke()
    {
        ob_start();
        ?>
    <!-- analytics-->
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', '<?=$this->code?>']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script');
            ga.type = 'text/javascript';
            ga.async = true;
            ga.src = 'http://www.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(ga, s);
        })();

    </script>
    <!-- end analytics-->
    <?php

        return ob_get_clean();
    }

}

?>
现在,在视图中,您只需调用

echo $this->analytics();

框架将搜索工厂、创建对象、指定值并调用invoke方法,以将完整代码返回到视图中。就这些。写一次,到处跑

当然,如果你只想访问账号,你可以让_invoke方法只返回账号,而不是所有的分析代码,但这是一个保持视图简单的好方法,让google的代码保存在自己的文件中,这将使将来更容易维护。我正在寻找的是view Helper,谢谢我很欣赏这些细节和代码。当然,如果你只想访问账号,你可以让_invoke方法只返回账号,而不是所有的分析代码,但这是保持视图简单的一个好方法,并且让谷歌的代码保存在自己的文件中,这将使它更容易维护在未来。查看助手是我正在寻找的,谢谢!我很欣赏这些细节和代码。当然,如果你只想访问账号,你可以让_invoke方法只返回账号,而不是所有的分析代码,但这是保持视图简单的一个好方法,并且让谷歌的代码保存在自己的文件中,这将使它更容易维护在未来。查看助手是我正在寻找的,谢谢!我很欣赏这些细节和代码。当然,如果你只想访问账号,你可以让_invoke方法只返回账号,而不是所有的分析代码,但这是保持视图简单的一个好方法,并且让谷歌的代码保存在自己的文件中,这将使它更容易维护在未来。查看助手是我正在寻找的,谢谢!我很感谢您提供的详细信息和代码。