You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twig中使用constant()方法同时获取多个常量值?

解决Twig中批量获取PHP类常量的问题

可行方案

方案1:在Twig中直接构建常量数组

对每个常量单独调用constant()函数,组合成目标数组:

{% set targetStatuses = [
    constant('\\Uello\\Service\\StateMachine\\Loader\\ServiceOrderItemProcess::STATUS_PICKED_UP'),
    constant('\\Uello\\Service\\StateMachine\\Loader\\ServiceOrderItemProcess::STATUS_DELIVERED'),
    constant('\\Uello\\Service\\StateMachine\\Loader\\ServiceOrderItemProcess::STATUS_RETURNED')
] %}

{# 后续可直接用数组做判断,比如检查config.to是否在目标状态集合中 #}
{% if config.to in targetStatuses %}
    {# 执行对应业务逻辑 #}
{% endif %}

方案2:PHP端提前组装数组传递给Twig

在PHP层(控制器/服务类)先整理好常量数组,再传递给模板,让Twig代码更简洁:

use Uello\Service\StateMachine\Loader\ServiceOrderItemProcess;

// 组装目标状态数组
$targetStatuses = [
    ServiceOrderItemProcess::STATUS_PICKED_UP,
    ServiceOrderItemProcess::STATUS_DELIVERED,
    ServiceOrderItemProcess::STATUS_RETURNED,
];

// 传递到Twig模板
return $this->render('your_template.html.twig', [
    'targetStatuses' => $targetStatuses,
]);

在Twig中直接使用预定义数组:

{% if config.to in targetStatuses %}
    {# 执行对应业务逻辑 #}
{% endif %}

方案3:自定义Twig函数(适合多模板复用场景)

如果该状态数组需要在多个模板中使用,可自定义Twig函数统一返回:

// 自定义Twig扩展类
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
use Uello\Service\StateMachine\Loader\ServiceOrderItemProcess;

class ServiceOrderExtension extends AbstractExtension
{
    public function getFunctions()
    {
        return [
            new TwigFunction('get_service_order_target_statuses', function() {
                return [
                    ServiceOrderItemProcess::STATUS_PICKED_UP,
                    ServiceOrderItemProcess::STATUS_DELIVERED,
                    ServiceOrderItemProcess::STATUS_RETURNED,
                ];
            }),
        ];
    }
}

注册扩展后,在Twig中调用:

{% set targetStatuses = get_service_order_target_statuses() %}

{% if config.to in targetStatuses %}
    {# 执行对应业务逻辑 #}
{% endif %}

内容的提问来源于stack exchange,提问作者Shirley Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:06