- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请问有没有语法来分隔“for”标签中的某些元素?
例如我有一个用户列表,我想用“-”分隔符显示他们的用户名,所以预期的结果是:Mickael - Dave - Chris - ...
我找到了这个解决方案:
{% for user in entity.users %}
{{ user.name }}{% if not loop.last %} - {% endif %}
{% endfor %}
最佳答案
AFAIK,不,您不能使用 join
在没有变通方法的情况下过滤您的用例。这是因为你需要拉getName
在对象属性之外。 join
只需链接 Traversable
的每个元素具有给定 glue
的实例.
但是,如果您需要,有一些解决方法。
添加 __toString 方法
在您的 User
实体,您可以添加 __toString
默认获取用户名的方法。
但是,如果没有其他对象使用当前默认值 toString
,您应该小心。因为它可能会引起冲突
namespace Acme\FooBundle\Entity;
class User
{
public function __toString()
{
return $this->getName();
}
}
然后你可以在你的 Twig 上使用
join
筛选
{{ entity.users|join(' - ') }}
映射 Controller 中的用户名
getUsers
是
PersistentCollection
,如果没有,请使用
array_map
反而
// Acme/FooBundle/Controller/MyController#fooAction
$users = $entity->getUsers();
$usernames = $users->map(function(User $user) {
return $user->getName();
});
return $this->render('AcmeFooBundle:My:foo.html.twig', array(
'entity' => $entity,
'usernames' => $usernames
);
然后在你的 Twig 上
{{ usernames|join(' - ') }}
创建 TWIG 过滤器
joinBy
的过滤器。其作用类似于
join
通过指定连接元素的方法。
acme_foo.tools_extension:
class: Acme\FooBundle\Twig\ToolsExtension
tags:
- { name: twig.extension }
扩展创建
namespace Acme\FooBundle\Twig;
use Twig_Extension, Twig_Filter_Method;
use InvalidArgumentException, UnexpectedValueException;
use Traversable;
/**
* Tools extension provides commons function
*/
class ToolsExtension extends Twig_Extension
{
/**
* {@inheritDoc}
*/
public function getName()
{
return 'acme_foo_tools_extension';
}
/**
* {@inheritDoc}
*/
public function getFilters()
{
return array(
'joinBy' => new Twig_Filter_Method($this, 'joinBy')
);
}
/**
* Implode-like by specifying a value of a traversable object
*
* @param mixed $data Traversable data
* @param string $value Value or method to call
* @param string $join Join string
*
* @return string Joined data
*/
public function joinBy($data, $value, $join = null)
{
if (!is_array($data) && !($data instanceof Traversable)) {
throw new InvalidArgumentException(sprintf(
"Expected array or instance of Traversable for ToolsExtension::joinBy, got %s",
gettype($data)
));
}
$formatted = array();
foreach ($data as $row) {
$formatted[] = $this->getInput($row, $value);
}
return implode($formatted, $join);
}
/**
* Fetches the input of a given property
*
* @param mixed $row An array or an object
* @param string $find Property to find
* @return mixed Property's value
*
* @throws UnexpectedValueException When no matching with $find where found
*/
protected function getInput($row, $find)
{
if (is_array($row) && array_key_exists($find, $row)) {
return $row[$find];
}
if (is_object($row)) {
if (isset($row->$find)) {
return $row->$find;
}
if (method_exists($row, $find)) {
return $row->$find();
}
foreach (array('get%s', 'is%s') as $indic) {
$method = sprintf($indic, $find);
if (method_exists($row, $method)) {
return $row->$method();
}
}
if (method_exists($row, $method)) {
return $row->$method();
}
}
throw new UnexpectedValueException(sprintf(
"Could not find any method to resolve \"%s\" for %s",
$find,
is_array($row)
? 'Array'
: sprintf('Object(%s)', get_class($row))
));
}
}
用法
{{ entity.users|joinBy('name', ' - ') }}
# or
{{ entity.users|joinBy('getName', ' - ') }}
关于symfony - Twig : separator in a "for" tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20239484/
我们与一位客户存在某种问题,该客户认为我们发送的 XML 文件中的两个版本的空标记之间存在语义差异(纯 XML 没有 HTML ..)。 他们期望: 我们发送: 我
我想计算文本中 pp/np/vp 的数量,但我不知道如何在 openNLP chunker 中识别 PP-tags/NP-tags/VP-tags?我已经尝试过这段代码,但它不起作用。 Chunker
从我正在阅读的代码的上下文来看,它看起来像 $("")创建一个标签,其中 $('')是一个搜索标签的选择器。这里发生了什么?实际上,我可能没有掌握第二个语法,但我确信我已经完成了 $('idName'
我正在使用 Builder::XmlMarkup 创建 xml。我想创建一个没有内容的标签,因为 api 强制我创建它。如果我使用博客 xml.tag do end 我得到了我想要的 但我希望它更短
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Using the XHTML closing slash (/) on normal tags? Are
默认情况下, someXmlWriter.WriteElementString("my-tag", someString); 产生 我环顾四周XmlWriterSettings强制作者生成 的可能选
如何修改tag-it ui插件https://github.com/aehlke/tag-it (版本 v2.0)因此它只允许选择 x 个标签,以及如何仅允许“availableTags-option
我能够解析这样的内容: value 通过: File inputFile = new File("input.xml"); DocumentBuilderFactory dbFactory = Doc
我不太确定如何编写这个查询,它可以在一个查询中完成。案例如下: 我需要选择标签名称列表,并为每个标签获取最近标记的专辑信息。这意味着,如果用户创建名为“Pamela Anderson”的专辑并将该专辑
这个问题在这里已经有了答案: Where should I put tags in HTML markup? (21 个回答) JavaScript at bottom/top of web pa
Django 2 by Example 中的教程,我不明白: step (2): Why is `Count('tags')` **not** counting the total number of
我是 jekyll 的新手,正在构建我的网站。 我有一个“帖子”布局,我希望与帖子相关的所有标签都出现在左栏中。我遇到的问题是,使用 {{ page.tags }} 会返回一个未以逗号分隔且看起来很乱
如何将一个目录下的所有hash tag重写为slash tag? ( Apache ) http://www.domain.com/company/index#about => http://www.
在查询 Flickr API 并检查返回的标签时,我注意到我收到了未在 Web 界面上显示的其他标签。例如对于此图像: http://www.flickr.com/photos/77060598@N0
我有类似 的东西我想得到这个: <1> <2> 但我只想在 中应用它标签而不是其他任何地方。 我已经有了这个: $txt = $this->input->post('
我想删除 xxx yyyy zzz 用 php。但是,首先,我想控制字符串是否以 开头并以 结尾 是否有用于此目的的函数? if(string begins with '' and ends wi
在我的模板中加载自定义标签时出现此错误。我访问了许多关于此的主题,并且确保确认我没有犯一些常见错误: 包含标签的文件在 templatetags 中文件夹。 此 templatetags文件夹包含 _
API doc中没有关于构造函数的文档。我想了解SvgElement.tag()的用途/用例。 最佳答案 SvgElement.tag(String tag)构造函数为对应的SvgElement值创建
$('*').data('tag', "tagged"); $('li[tag=tagged]').length 返回零... 最佳答案 $('*').data('tag', "tagged"); $
下面的代码出错了。我该如何解决这个问题? {% block header %} {% endblock %} 错误输出: TemplateSyntaxError : Invalid bloc
我是一名优秀的程序员,十分优秀!