Zend framework2 Zend 2与zfctwig-查看帮助程序

Zend framework2 Zend 2与zfctwig-查看帮助程序,zend-framework2,twig,Zend Framework2,Twig,我是zf2新手,很长时间没有使用twig…我的问题是-如何将zf2中的视图帮助程序与zfctwig模块一起使用 我的意思是,例如,在kohana框架中,在view helper类中编写一个公共方法自动允许我将此函数的返回值显示为视图变量。视图类和view.twig文件的名称必须匹配。但是当我在这里尝试它时,它不起作用(我将视图助手放在src/modulename/view中)。我能做这样的事情吗?应该这样吗 另外,视图帮助器类应该是什么样子 最后,我应该在我的控制器中使用return new V

我是zf2新手,很长时间没有使用twig…我的问题是-如何将zf2中的视图帮助程序与zfctwig模块一起使用

我的意思是,例如,在kohana框架中,在view helper类中编写一个公共方法自动允许我将此函数的返回值显示为视图变量。视图类和view.twig文件的名称必须匹配。但是当我在这里尝试它时,它不起作用(我将视图助手放在
src/modulename/view
中)。我能做这样的事情吗?应该这样吗

另外,视图帮助器类应该是什么样子


最后,我应该在我的控制器中使用
return new ViewModel()
将变量传递到视图文件中吗?

我通过将以下代码添加到模块.cf config.php中解决了这个问题

return array(   
    'view_helpers' => array(
        'factories' => array(
            'langWidget' => function($sm){
                 return new \Application\View\Helper\LanguagesWidget($sm);
            }
        ),
    ),
);
您可以在模板中使用它

<div>{{ langWidget() }}</div>
namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\Di\ServiceLocatorInterface;
use Application\Util\Util;
use Zend\View\Model\ViewModel;

/**
 * Widget with lang change elements
 *
 * 
 */
class LanguagesWidget extends AbstractHelper
{
    protected 
            /** @var \Zend\ServiceManager\ServiceManager */
            $serviceLocator;

    public function __construct($sm)
    {
        $this->serviceLocator = $sm->getServiceLocator();
        $this->viewManager = $this->serviceLocator->get('ViewManager'); 
    }

    public function __invoke() 
    {   
        $config = $this->serviceLocator->get('Config');
        $appLangs   = Util::getSafeArrayItemValue($config, 'languages', array());

        $widget = new ViewModel(array(
                'langs' => $appLangs
            )
        );
        $widget->setTemplate('widget/langs');

        return $this->viewManager->getRenderer()->render($widget);
    }
}