是否可以在树枝模板中使用三元运算符?现在,为了向DOM元素添加一些类依赖于某些条件,我喜欢这样:
{%if ability.id in company_abilities%}
<tr class="selected">
{%else%}
<tr>
{%endif%}
Run Code Online (Sandbox Code Playgroud)
代替
<tr class="<?=in_array($ability->id, $company_abilities) ? 'selected' : ''?>">
Run Code Online (Sandbox Code Playgroud)
在本机的PHP模板引擎.
我的实体类中有一些类常量,例如:
class Entity {
const TYPE_PERSON = 0;
const TYPE_COMPANY = 1;
}
Run Code Online (Sandbox Code Playgroud)
在普通的PHP中,我经常这样做if($var == Entity::TYPE_PERSON),我想在Twig中做这种事情.可能吗?
我想找到字符串的子字符串或使用Twig检查是否没有这样的子字符串.换句话说,我需要在php中使用'strstr'或'strpos'的模拟.我用Google搜索并在stackoverflow中搜索了这个问题,但没有找到.有人知道如何解决这个问题吗?
通常在编码和模板中我需要包装文本的某一部分.是否有任何快捷方式来包装当前选择,例如:
Hello World
"Hello World"
Hello World
{{ trans 'Hello World' }}
Run Code Online (Sandbox Code Playgroud)
我使用PhpStorm 7 for Mac和PC.我找到了类似的东西:ctrl+ alt+ j你可以用html-tag包装,但没有别的.此外ctrl+ alt+ -根据当前文件格式评论当前的选择(PHP,树枝,HTML,...)
如何从Twig中设置已存在的数组的成员?
我尝试下一步:
{% set arr['element'] = 'value' %}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
在......中意外的标记"标点符号"值"["("预期结束语句块")
似乎我有一个问题,如果声明.
{%if fields | length > 0 || trans_fields | length > 0 -%}
Run Code Online (Sandbox Code Playgroud)
错误是:
Unexpected token "punctuation" of value "|" ("name" expected) in
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么这不起作用,就像是因为所有管道都丢失了枝条.
我试过这个:
{% set count1 = fields | length %}
{% set count2 = trans_fields | length %}
{%if count1 > 0 || count2 > 0 -%}
Run Code Online (Sandbox Code Playgroud)
但是如果也失败了.
然后尝试了这个:
{% set count1 = fields | length > 0 %}
{% set count2 = trans_fields | length > 0 %}
{%if count1 || count2 -%}
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用,每次都是同样的错误......
所以...这引出了一个非常简单的问题:Twig是否支持多种条件?
如何限制文本的长度,例如50,并在显示屏上放置三个点?
{% if myentity.text|length > 50 %}
{% block td_text %} {{ myentity.text}}{% endblock %}
{%endif%}
Run Code Online (Sandbox Code Playgroud) 如何在Twig路径中添加多个参数?
说你有这条路线:
article_show:
pattern: /article/{slug}
defaults: { _controller: AcmeArticleBundle:Article:show }
Run Code Online (Sandbox Code Playgroud)
您可以在twig模板中执行此操作:
{{ path('article_show', { 'slug': article.slug }) }}
Run Code Online (Sandbox Code Playgroud)
但是如果你的路由文件中有这个怎么办:
_files_manage:
pattern: /files/management/project={idproject}&user={iduser}
defaults: { _controller: AcmeTestBundle:File:manage }
Run Code Online (Sandbox Code Playgroud)
看起来他们没有在他们的文档中介绍这一点.
在Symfony 2模板(使用Twig)中,如何有效地检查用户是否未登录?
我不想用ROLE支票.我想要一种直接的方法来检查用户是否未登录.
我知道app.user.username与anon作品相比,但这对我来说感觉不对.
我正在使用FOSuserbundle开始用户注册https://github.com/FriendsOfSymfony/FOSUserBundle
我已经注册/登录和注销了.我现在要做的是获取登录用户数据并将其呈现在我网站的每个页面上.像标题类型的东西中的"Hi username".
似乎在我的app/Resources/views/base.html.twig中嵌入一个控制器是执行此操作的最佳方式http://symfony.com/doc/current/book/templating.html#embedding-controllers
所以我编写了我的控制器来访问用户配置文件数据.我无法弄清楚如何在我的嵌入式控制器中访问FOS方法.所以从我的Acme/UserBundle/Controller/UserController.php我想这样做:
public function showAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException(
'This user does not have access to this section.');
}
return $this->container->get('templating')
->renderResponse('FOSUserBundle:Profile:show.html.'.$this->container
->getParameter('fos_user.template.engine'), array('user' => $user));
}
Run Code Online (Sandbox Code Playgroud)
我从中获取:vendor/bundles/FOS/UserBundle/Controller/ProfileController.php