Zend framework2 从视图(phtml)访问local.php或global.php?
我想为整个应用程序的每次更新都在local或global.php中输入一个google analytics账号。但是,我不知道如何从视图访问它。我是做错了,还是有办法做到这一点?我想要避免的是把东西放到每个控制器中去传递它。我只是希望布局能够抓住它 如果有更好的解决办法,我洗耳恭听Zend framework2 从视图(phtml)访问local.php或global.php?,zend-framework2,Zend Framework2,我想为整个应用程序的每次更新都在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方法只返回账号,而不是所有的分析代码,但这是保持视图简单的一个好方法,并且让谷歌的代码保存在自己的文件中,这将使它更容易维护在未来。查看助手是我正在寻找的,谢谢!我很感谢您提供的详细信息和代码。