Php 如何制作视图辅助对象
// 编辑: 我已经解决了我的问题,我想分享解决方案。 制作Zend Framework 2助手的更好方法是:Php 如何制作视图辅助对象,php,view,zend-framework2,view-helpers,Php,View,Zend Framework2,View Helpers,// 编辑: 我已经解决了我的问题,我想分享解决方案。 制作Zend Framework 2助手的更好方法是: Step 1. <?php //file : App_folder/module/Module_name/src/Module_name/View/Helper/SayHello.php namespace Application\View\Helper; use Zend\View\Helper\AbstractHelper; class SayHello extends
Step 1.
<?php
//file : App_folder/module/Module_name/src/Module_name/View/Helper/SayHello.php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class SayHello extends AbstractHelper{
public function __invoke($name = 'Unnamed'){
return "Hello $name,";
}
}
?>
第1步。
第二步
<?php
//file : App_folder/module/Module_name/Module.php
public function getViewHelperConfig()
{
return array(
'factories' => array(
// the array key is the name of the invoke function that is called from view
'sayHello' => function($name) {
return new SayHello($name);
},
),
);
}
?>
第三步
<?php
//file : App_folder/module/Module_name/view/Module_name/index/index.phtml
$this->sayHello('Dimitri');
?>
感谢大家的帮助。创建
ViewHelper
是一项简单的任务,根据您的需要,它分为2-3个步骤。通常,第一步是实际创建一个ViewHelper
,这是您必须做出第一个决定的地方
ViewHelper
是否具有依赖关系?如果是,则需要一个\uu construct()
函数ViewHelper
是否需要参数?如果是,则需要为\u invoke()
函数提供参数ViewHelper
<?php
// FileName: /module/Application/src/Application/View/Helper/MyHelper.php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class MyHelper extends AbstractHelper
{
// If you have dependencies:
public function __construct(DependencyInterface $dependency)
{
// store dependency as a local property inside class
}
// Put arguments if you need them, if not leave them blank
public function __invoke($arg1, $arg2, ..., $argN)
{
// Have a string being returned directly
// return 'some string';
// Or you could return a rendered view template and pass view variables
// return $this->getView()->render('foo/bar', array(
// $arg1, $arg2, ..., $argN
// ));
}
}
然后,您可以在视图文件中通过
$this->myHelper()
使用ViewHelper
。顺便说一句,您是否为ViewHelper
名称设置大小写并不重要,因为它的内部大小写会更低。因此$this->MyHelper()
等于$this->MyHelper()
和MyHelper
等于MyHelper
如果你找到了自己问题的解决方案,请发布答案,而不是编辑原始帖子。不看编辑历史;这个问题对将来可能遇到相同问题的其他人没有任何帮助。另外,模块中的$name
。php
是ViewPluginManager
的一个实例(不是字符串)。然后将其传递给一个不存在的构造函数:returnnewsayhello($name)代码>。这应该是returnnewsayhello()代码>甚至更好;创建一个可调用的
,而不是通过闭包。Dimi,正如@AlexP所说,你必须将结果发布为答案,或者接受和现有答案。请写一个答案并回滚编辑,以便问题保持在您第一次发布时的状态。否则,该问题可能会被删除,因为它不是一个实际问题,对未来的用户也没有用处
public function getViewHelperConfig()
{
return array(
'invokables' => array(
'MyHelper' => 'Application\View\Helper\MyHelper'
),
// or if it has dependencies
'factories' => array(
'MyHelper' => function($viewHelperManager) {
$serviceLocator = $viewHelperManager->getServiceLocator();
$dependency = $serviceLocator->get('SomeDependency');
return new MyHelper($dependency);
}
)
);
}