从树枝视图访问遗留类

时间:2016-02-08 04:17:37

标签: php symfony twig

我们正在重写Web门户网站的一部分,我需要在树枝视图中进行逐位比较。我在视图中有值(整数)从控制器传递,我需要决定要显示什么图像。我曾经只是对/ opt文件夹中某个类的值进行逐位比较。

我可以在twig中进行按位(b和)比较但是如何访问旧版php类来进行比较?

2 个答案:

答案 0 :(得分:1)

在twig模板中,您无法访问常规PHP方法。因此,要包含您的遗留类,您需要编写自定义函数和twig扩展。这是一个例子:

class StepOutExtension extends \Twig_Extension
{
    public function getFunctions()
    {
        return array(
            'inspect' => new \Twig_Function_Method($this, 'step_out', array('needs_context' => true))
        );
    }
    public function stepOut($context)
    {
        // access your class here
    }
    public function getName()
    {
        return 'legacy_class';
    }
}

注册服务:

services:
    my_namespace.step_out:
        class: Acme\DemoBundle\Extensions\StepOutExtension
        tags:
          - { name: twig.extension }

在树枝内你可以调用你的新功能

{{ step_out() }}

可以找到更多详细信息in the Symfony docs

答案 1 :(得分:0)

您可以使用constant function通过twig访问类常量,如下所示:

{{ constant('Namespace\\Classname::CONSTANT_NAME') }}

您也可以访问常量到类实例:

{{ constant('RSS', date) }}

您可以将值与标准if语句或constant test(检查变量是否具有与常量完全相同的值)进行比较,如下所示:

{% if post.status is constant('Post::PUBLISHED') %}
    the status attribute is exactly the same as Post::PUBLISHED
{% endif %}

希望这个帮助