Php 在细枝for循环中调用函数
如何在Twigg for循环中调用函数。 我有一个数据库的数组输出,我在twig中调用它,如下所示:Php 在细枝for循环中调用函数,php,symfony,twig,Php,Symfony,Twig,如何在Twigg for循环中调用函数。 我有一个数据库的数组输出,我在twig中调用它,如下所示: <tbody> {% for O in Orders %} <tr> <td>{{ O.DomainName~'.'~O.Extension }}</td> <td>{{ O.Package }}</td> <td>{{ O.StoreDate }}</td> <td>{{ O.Execu
<tbody>
{% for O in Orders %}
<tr>
<td>{{ O.DomainName~'.'~O.Extension }}</td>
<td>{{ O.Package }}</td>
<td>{{ O.StoreDate }}</td>
<td>{{ O.ExecuteDate }}</td>
<td>{{ O.Email }}</td>
<td>{{ O.UserIP }}</td>
<td></td>
</tr>
{% endfor %}
</tbody>
现在我知道我不能直接从twig调用函数。
我是否需要使用twig\u simplefunction将其添加为twig扩展名?创建一个twig扩展名,并将代码封装在其中。您的代码将变得更加干净,不会污染视图和控制器 首先创建一个过滤器
namespace AppBundle\Twig;
class MyIpExtension extends \Twig_Extension {
public function getFilters()
{
return array(
new \Twig_SimpleFilter('ipcountry', array($this, 'country')),
);
}
public function ip_country($userIP) {
$ip = $userIP;
$details = json_decode(file_get_contents("http://freegeoip.net/json/{$ip}"));
return $details->country_code; // -> "US"
}
public function getName()
{
return 'app_extension';
}
}
然后注册为symfony集装箱服务
# app/config/services.yml
services:
app.twig_extension:
class: AppBundle\Twig\MyIpExtension
public: false
tags:
- { name: twig.extension }
然后在细枝视图中使用扩展
{{ O.UserIP | ipcountry }}
密切关注类名和名称空间。对您的环境进行必要的调整。为什么要在视图中而不是控制器中调用该函数,然后简单地返回您需要的所有数据。我已经尝试使用array\u push将国家添加到阵列中,但我认为这不是正确的方法。我已经在用命令呈现模板,如果我再添加一个,我会在for loopYep中得到一个for。做一个过滤器扩展。然后你的小枝将是{{UserIP | ip_country}}是的,函数和过滤器:否。你真的不能把php放在一个小树枝模板里面。采用细枝方式做事或使用不同的模板系统。一旦您完成了这个过程,那么添加一个扩展就很简单了。
{{ O.UserIP | ipcountry }}