如何在Twig中使用preg_replace

8

我目前正在尝试使用当前URL创建一个变量以供查看。为了获取URL,我使用{% set uri = app.request.uri %}(uri是我的变量,即该特定视图的当前URL)。问题在于,我只对使URL唯一的内容感兴趣(它的末尾-来自数组的唯一对象-恰好是uri),而不是开头(应用程序路径)。我想我可以使用preg_replace来做到这一点,但TWIG没有这个功能。只是想知道是否有人知道如何完成我想做的事情?

我对Symfony(和PHP)还不太熟悉,所以我的解释可能不太清楚(抱歉)。

例如:

{% set uri = app.request.uri %}

输出:http://website.com/http://item.org/1

我想修改uri变量,仅保留http://item.org/1(而不是我的网站路径)。

我想创建一个Twig扩展,使用preg_replace来实现这个目标,但我不确定是否是最佳方法(我经验不足)。


总体目标: 视图中“uri”的唯一值由另一个视图附加到对象数组($results)中的“uri”属性。我的最终目标是仅显示与我的$results数组中的对象相关联的所有属性(或行)。我想通过首先在foreach中创建一个键(我的uri变量),并返回与此键匹配的数组中的行来实现这一点。这就是为什么我正在尝试创建一个带有url的变量,以便我可以将其用作我的foreach循环的键来遍历$results。我没有使用数据库或Doctrine。

提前感谢您的帮助!

3个回答

5
最好的方法是将逻辑从模板移动到控制器中。
如果您需要在twig中使用preg_replace,您必须创建自定义扩展

1
我已经创建了一个扩展程序,用于在Twig中使用PCRE。对于其他有此问题的人可能会有所帮助。 - Arnold Daniels

1

你可以这样做。虽然有点丑陋,但它能够工作。

uri|split('base_path')|join('')

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接