【问题标题】:Create ViewHelper in Symfony 2在 Symfony 2 中创建 ViewHelper
【发布时间】:2014-07-09 17:13:02
【问题描述】:

如何在 Symfony 2 中创建 ViewHelper。我阅读了整个文档,但它没有描述任何类似的术语。它只有自动加载和服务。 http://symfony.com/doc/current/cookbook/index.html

【问题讨论】:

  • “创建 ViewHelper”是什么意思?如果您想将自定义函数/过滤器/等添加到 twig,请阅读symfony.com/doc/current/cookbook/templating/twig_extension.html
  • ViewHelper 是一种在视图(模板)中调用辅助函数的方法。我不知道它在 Symfony2 中叫什么,但 Zend 称它为“viewHelper”。顺便说一句,我不使用 Twig,而是使用 PHP。
  • 您可以扩展 twig 以创建 twig 过滤器和功能。请查看官方twig文档twig.sensiolabs.org/doc/advanced.html

标签: symfony-2.1


【解决方案1】:

你只需要创建一个类来实现你的辅助函数并扩展

Symfony\Component\Templating\Helper\Helper

像这样:

namespace Acme\Foo\Helper;


use Symfony\Component\Templating\Helper\Helper;

class MyViewHelper extends Helper {

    public function helpMe() {
       // do something
       return $value;
    }

   /**
    * @inheritdoc
    */
    public function getName() {
         return "anyCanonicalServiceName";
    }
}

然后你必须将你的助手推广为一个带有特殊标签的服务,例如

Resources/config/services.yml


services:
        your_service_name:
        class: Acme\Foo\Helper\MyViewHelper
        # the tag alias "myViewHelper" is later used in the view to access your service
        tags:
            - { name: templating.helper, alias: myViewHelper }

现在您可以在这样的视图中访问帮助程序:

echo $view['myViewHelper']->helpMe();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2016-02-28
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多