我们正在重写Web门户网站的一部分,我需要在树枝视图中进行逐位比较。我在视图中有值(整数)从控制器传递,我需要决定要显示什么图像。我曾经只是对/ opt文件夹中某个类的值进行逐位比较。
我可以在twig中进行按位(b和)比较但是如何访问旧版php类来进行比较?
答案 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 %}
希望这个帮助