我有一条这样的路线
admin /申请人/ 1111 /视图
我试图像这样在树枝上捉住那条路线:
{% if route matches '#admin\/applicants\/\d+\/view#' %}
route matched
{% else %}
not matched
{% endif %}
它应该匹配,经过测试并且可以完美运行。
如何解决此问题?
答案 0 :(得分:2)
您可能只想使用[0-9]
而不是\d
,这可能会解决您的问题:
{% set route = 'admin/applicants/1111/view' %}
{% if route matches '#admin\/applicants\/[0-9]+\/view#' %}
route matched
{% else %}
not matched
{% endif %}
route matched
答案 1 :(得分:2)
虽然Emma's answer是正确的,但请记住,您需要在\d
前面“转义”反斜杠,否则twig
会转换为\d
的原义源代码中的d
{% if route matches '#admin\/applicants\/\\d+\/view#' %}
route matched
{% else %}
not matched
{% endif %}
{% if route matches '#admin\/applicants\/\d+\/view#' %}
编译的PHP源代码
if (preg_match("#admin/applicants/d+/view#", (isset($context["route"])
如您所见,已编译的php源仅翻译为d+
。添加一个额外的反斜杠可“解决”此问题(请参见行上方的代码)