0

私はzf2が初めてで、かなり長い間twigを使用していません...私の質問は、zfctwigモジュールを使用してzf2でビューヘルパーを使用するにはどうすればよいですか?

たとえば、kohana フレームワークでは、ビュー ヘルパー クラスにパブリック メソッドを記述すると、この関数の戻り値をビュー変数として自動的に表示できます。ビュー クラスとビュー .twig ファイルの名前は一致する必要がありました。しかし、ここで試してみるとうまくいきませんでした (ビュー ヘルパーを に配置しましたsrc/modulename/view)。私はこのようなことをすることができますか?

また、ビュー ヘルパー クラスはどのように見えるべきでしょうか?

最後に、return new ViewModel()ビュー ファイルに変数を渡すためにコントローラーで使用する必要がありますか?

4

1 に答える 1

0

module.с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);
    }
}
于 2014-04-18T14:52:08.333 に答える