我目前正在尝试使用视图的当前网址创建变量。要获取网址,我使用{%set uri = app.request.uri%}(uri是我的变量,这是该特定视图的当前网址)。问题是,我只对使url唯一(它的结尾 - 数组中的唯一对象 - 碰巧是uri)的原因感兴趣,而不是开始(我的应用程序的路径)。我以为我可以使用preg_replace这样做,但是TWIG没有这个功能。只是想知道是否有人知道如何完成我想要做的事情?
我是Symfony的新手(也是PHP的新手),所以我的解释可能不太清楚(抱歉)。
实施例
{% set uri = app.request.uri %}
输出:http://website.com/http://item.org/1
我想将uri变量修改为仅http://item.org/1(而不是我网站的路径)。
我正在考虑使用preg_replace创建一个Twig扩展允许我这样做..但不确定它是否是最好的方法(缺乏经验)。
总体目标: 视图中“uri”的唯一值通过具有属性的对象数组($ results)中的另一个视图附加到网站路径,其中一个是“uri”。我的最终目标是只显示$ results数组中对象的所有相关属性(或行)。 我想我可以通过首先在foreach中创建一个键(我的uri变量)并返回与该键匹配的数组中的行来实现此目的。这就是我尝试创建变量的原因使用url以便我可以将它用作我的foreach循环的键来迭代$ results。我没有使用数据库或Doctrine。
提前感谢您的帮助!
答案 0 :(得分:4)
最好的方法是将逻辑从模板移动到控制器。
如果您需要在树枝中使用preg_replace,则必须创建custom extension。
答案 1 :(得分:0)
有人似乎为preg_replace创建了一个Twig扩展,请参阅https://github.com/victor-in/Craft-TwigPCRE
答案 2 :(得分:0)
您可以那样做。有点难看,但是可以用。
var config = { keywords: ['python', 'jieba'] },
keywords = config.keywords,
keyword;
for (keyword in keywords) {
if (keyword !== '0') {
keywords[keyword] = keywords[keyword - 1] + " " + keywords[keyword]
console.log(keywords)
}
}