twig 相关问题

Twig是一款适用于PHP的现代,快速,灵活且安全的模板引擎。为Symfony创建并由Drupal 8采用。

Twig:“for”标签中的分隔符

请问有语法可以分隔“for”标签中的某些元素吗? 例如,我有一个用户列表,我想用“-”分隔符显示他们的用户名,所以预期结果是:

回答 2 投票 0

Symfony 中的代码放置(服务/存储库)

使用Symfony 6,我有一个实体文章,其中有Cat(egories)。 我想得到这样的猫的网址: {% for data.body.article.cats 中的项目 %} 使用 Symfony 6,我有一个实体文章,其中有 Cat(egories)。 我想得到这样的猫的网址: {% for item in data.body.article.cats %} <li><a href="{{ item.url }}">{{ item.cat }}</a></li> {% endfor %} 但是 Cat->url 不是数据库中的字段,它是生成的值。 我的问题: 我认为在实体猫中创建函数 getURL() 是不对的,因为它不是数据库字段。所以我应该将该函数放在 CatService.php 或 CatRepository.php 中。它在哪个文件中? (什么时候使用Service,什么时候使用Repository?) 如何从 twig 文件中调用该函数? 如何在该函数中使用当前的 Cat 对象? 谢谢! 谷歌搜索,但我无法真正找到服务和存储库之间的区别。 您可以创建一个新的控制器和路由以供Category实体列出或读取,您不需要说出您将做什么并使用twig的path()函数来生成url。您可以从这里阅读有关路径函数的更多信息https://symfony.com/doc/6.4/reference/twig_reference.html#path。你的树枝应该看起来像: {% for item in data.body.article.cats %} <li><a href="{{ path('your_category_route', {category: item.id}) }}">your category name</a></li> {# or whatever is your relation to category, you don't give any info about relations #} {% endfor %} 你的路线应该是这样的: your_category_route: path: /url-path/{category}/ controller: YourControllerPath::method 服务与存储库 为了简单起见: 服务用于业务操作等逻辑动作 存储库用于存储和调用数据库操作(创建实体、获取实体、自定义查询等) 服务可以调用存储库中的方法。 从 Twig 调用函数 如果您想在实体对象中调用函数:{{ item.MyFunction() }}。 您还可以创建自定义 Twig Extension 来实现更复杂的行为。 在该函数中使用 Cat 对象 如果该功能位于您的实体内:{{ item.MyFunction(item.cat) }}。 使用自定义树枝扩展:{{ item.cat|twig_extension }},其中 twig_extension 是您在上一节中开发的扩展。 请注意,您没有共享您的实体类,因此您需要将我的示例应用于您的实体以使其正常工作!

回答 2 投票 0

如何在twig中使用单注释行和多注释行

我是树枝项目的新手。我需要注释一些代码,例如 // 或 /**/。如何在树枝中使用评论? {%如果角色=3%} 我是树枝项目的新手。我需要注释一些代码,例如 // 或 /**/。如何在twig中使用评论? {%if role=3 %} <div class="col-md-6"> <div class="form-group"> <label class="control-label">&nbsp;</label> <select multiple class="form-control" id="path_attachment" name="path_attachment[]"></select> </div> </div> {% else %} <div class="col-md-6"></div> {% endif %} {# Commented Code in Twig #} 希望对您有帮助。 twig 命令关键字是#。在 {# 内部使用并以 #} 结尾。以下是您需要的答案。 {#%if role=3 %} <div class="col-md-6"> <div class="form-group"> <label class="control-label">&nbsp;</label> <select multiple class="form-control" id="path_attachment" name="path_attachment[]"></select> </div> </div> {% else %} <div class="col-md-6"></div> {% endif %#} 评论:) 注释掉一行或多行代码(或一行的一部分) 使用 {# ..... #} 语法。 例如: 单行评论: {# This will be a comment #} 线路的某些部分: <p>You can also comment out {# part of a line #}.</p> 多行评论: {# This will be a multi-line comment. #} 注释不仅仅对于编写代码注释有用。您还可以导致代码块不被执行。注释标签之间的任何 Twig 代码都不会被执行或输出。 {# The following code will not be executed and nothing will be outputted {% if category.posts %} This category has posts {% endif %} #} 您还可以使用 IDE/编辑器配置快捷方式来注释多行。 在 PhpStorm 中,我使用 Ctrl + b 来完成此操作。 您还可以使用 html 注释标签 <!-- --> 特别是如果您想注释掉已经包含树枝注释的代码块。 它将忽略现有的 {# #} 标签。 ;) <!-- {# some existing comment using twig comment tags #} -->有可能 {# {# some existing comment using twig comment tags #} #}不是

回答 5 投票 0

Twig 与额外列的关系

我遇到问题,但不知道解决它的最佳实践。 我想要一个用于我的核心数据的表格。核心数据都是可版本化的。 我用 GUID 解决了这个问题,以了解 ve 的一致性...

回答 1 投票 0

自定义错误页面中的 Silex 和 Twig 助手

我在 Silex 中渲染自定义错误页面时遇到问题。 根据我在此链接中找到的内容:http://refactoring.us/silex/custom-error-pages-with-silex-and-twig/。 我正在努力...

回答 1 投票 0

Symfony:无法加载 Twig 扩展运行时

我按照本指南向 Symfony 4 项目添加自定义 Twig 扩展。 我的应用程序\Twig\AppExtension如下: 我按照本指南向 Symfony 4 项目添加自定义 Twig 扩展。 我的App\Twig\AppExtension如下: <?php namespace App\Twig; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; class AppExtension extends AbstractExtension { public function getFunctions() { return [ new TwigFunction('getController', [AppRuntime::class, 'getController']) ]; } } 还有我的App\Twig\AppRuntime: <?php namespace App\Twig; use Symfony\Component\HttpFoundation\RequestStack; class AppRuntime { private $request; public function __construct(RequestStack $requestStack) { $this->request = $requestStack->getCurrentRequest(); } public function getController() { return $this->request->get('_controller'); } } 但是如果我尝试在模板中使用 getController() 函数,我会收到此异常: 无法加载“App\Twig\AppRuntime”运行时。 Twig 模板中的以下行会产生此错误: echo twig_escape_filter($this->env, $this->env->getRuntime('App\Twig\AppRuntime')->getController(), "html", null, true); php bin/console debug:container 将 App\Twig\AppRuntime 显示为正确的服务。我也尝试过将 App\Twig\AppRuntime 设置为公共服务,但没有成功。 这里可能出现什么问题? 很可能您忘记标记您的树枝扩展服务。 您在第一个示例中得到了如何执行此操作的说明: https://symfony.com/doc/current/service_container/tags.html 要将评论放入答案中,此错误有两种解决方案。 解决方案1 实施RuntimeExtensionInterface class AppRuntime implements RuntimeExtensionInterface 启用运行时服务的自动配置 App\Twig\AppRuntime: autoconfigure: true 解决方案2 将 twig.runtime 标签添加到运行时服务 App\Twig\AppRuntime: tags: - { name: twig.runtime } 我刚刚解决了这个问题,我的情况有所不同,让我把它留在这里,以防它对任何人有帮助。 我得到:Unable to load the "MyCustomFunctions" runtime in "main" at line 1 我加载函数的方式不是在扩展内,而是一个接一个地加载,如下所示: $twig->addFunction(new TwigFunction('print', 'MyCustomFunctions::print')); 这是我作为类方法的函数定义 MyCustomFunctions: // just as an easy to test example public function print($var = '') { return print_r($var, true);; } 解决方案 问题是我加载函数的方式与函数声明不一致。我忘记了函数声明 public static function,其中有 static。现在它与加载函数时使用的 :: 可调用相匹配。 很明显,一旦你看到它,但从错误消息来看却非常不明显......我花了很长时间才弄清楚这一点。

回答 3 投票 0

Vim、Twig 和 html 缩进

我正在尝试格式化 Twig 文件中的 html,但我遇到了缩进问题。我探索了各种解决方案: Prettier(通过 ALE 插件):不幸的是,它不支持 Twig。 运行 php ...

回答 1 投票 0

表单字段中的 symfony twig 变量

我的 FromType 文件中有许多具有名称的字段: //表单类型.php for($i=0;$iadd('matricola_'.$i, TextType::class, array( /*....*/ ->add('tipologia_'.$i, TextType::

回答 2 投票 0

Drupal twig 模板(如果移动)

好吧,我正在尝试开发drupal模板,我需要告诉你,我不太明白如何使用If mobile。 {% if is_mobile() %} {{ 页面.内容 }} {% 万一 %} 我以为这个...

回答 1 投票 0

Symfony 2 - 删除表单和 CSRF 令牌

我有一个来自数据库的条目列表。我希望在每一行的末尾都有一个“删除按钮”,这样用户就不必先转到编辑/显示页面来删除条目。 我

回答 4 投票 0

将 StudlyCase 和 Snake_case 子字符串转换为“空格单词”,同时保留树枝表达式中的首字母缩略词

Symfony 树枝 如何仅在小写字母后面添加空格时在大写字母后面添加空格。 {{ 'IWantHTML'| humanize }} //显示'我想要 h t m l'。 // 应该是“我想要 HTML”。 另一个...

回答 4 投票 0

如何只在小写字母后面时在大写字母前面添加空格?

Symfony 树枝 如何仅在小写字母后面添加空格时在大写字母后面添加空格。 {{ 'IWantHTML'| humanize }} //显示'我想要 h t m l'。 // 应该是“我想要 HTML”。 另一个...

回答 4 投票 0

如何删除twig中文本的空格?

我在使用 symfony2 时使用 twig 模板引擎。我正在尝试找到一种方法来删除文本中的空格。 例如,I play 将变为 Iplay。 我试过了: 无空间 修剪

回答 6 投票 0

如何在 Twig 模板中转义 Twig 分隔符?

Twig 使用 {{ }}、{% %}、{# #} 分隔符。 但是如何在 Twig 模板中显示 {{ }} 呢? 我不是在谈论 HTML 转义。 我问这个问题是因为我想在 m 中包含胡子模板...

回答 3 投票 0

Twig 访问数组索引?

是否可以从 Twig 模板中直接访问数组索引? 这是我使用 Silex 的设置: return $app['twig']->render('template', array('numbers' => array('one', 'two', 't...

回答 4 投票 0

Twig:如何获取字符串中的第一个字符

我正在实施按字母顺序搜索。 我们显示一个名称表。我只想突出显示那些名称以相应字母开头的字母。 我被一个si难住了...

回答 3 投票 0

Symfony 6:根据第一个字段选择显示条件表单字段

我想根据“presenceEvent”的选择(设置为“Oui”或“true”)显示或隐藏“presenceDejeuner”和“participerActivite”字段。 S...

回答 1 投票 0

使用 Twig 时如何处理 Doctrine 可嵌入的空值?

我在 Symfony 应用程序中实现 Doctrine 嵌入时遇到问题 我在树枝模板中有这个: {% if m.getSecurity.getIsin %}{{ m.getSecurity.getIsin }}{% endif %} 我在 Symfony 应用程序中实现 Doctrine 嵌入时遇到问题 我在树枝模板中有这个: <td>{% if m.getSecurity.getIsin %}{{ m.getSecurity.getIsin }}{% endif %}</td> 当渲染模板时,我收到此错误: Typed property App\Entity\ISIN::$value must not be accessed before initialization 这是我的实体定义: <?php declare(strict_types=1); namespace App\Entity; use App\Exceptions\InvalidCUSIP; use App\Exceptions\InvalidISIN; use DateTimeInterface; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping\Embedded; use Doctrine\ORM\Mapping\Embeddable; /** * Security. * * @ORM\Table(name="security") * @ORM\Entity(repositoryClass="App\Repository\SecurityRepository") */ class Security { /** * @ORM\Embedded(class = "ISIN", columnPrefix=false) */ private ?ISIN $isin = null; public function getIsin(): ?ISIN { return $this->isin; } /** * @return $this */ public function setIsin(?ISIN $isin): self { $this->isin = $isin; return $this; } } /** @Embeddable */ class ISIN { public const CHAR_COUNT = 12; /** * @ORM\Column (name = "isin", type="string", length=12, nullable=true, unique=true) */ private string $value; /** * @throws InvalidISIN */ public function __construct(string $value) { if (strlen($value) != self::CHAR_COUNT) { throw new InvalidISIN($value); } $this->value = $value; } public function __toString(): string { return $this->value; } } 我最近更改了一个更简单的实现,该实现将字段 isin 作为主要实体的一部分,并且一切正常。我在数据库中有一些记录,其中字段 isin 为空,这应该没问题...... 有什么想法吗? P.S.:相关问题(也是我提出的:如何使用 Twig 渲染自定义可嵌入学说字段?) 您试图在初始化之前访问 $value 变量。为了解决这个问题,您可以使其可为空,并使用以下声明将其初始化为空值: private ?string $value = null;

回答 1 投票 0

如何使用 Twig 渲染自定义的可嵌入学说字段?

我有一个 Doctrine 实体,它有一个字符串字段,我正在尝试将其更改为可嵌入的以使用更好的抽象。 我创建了新类,更改了字段类型,然后更改了用于

回答 1 投票 0

Twig 中的字符串比较运算符如何工作?

这怎么可能?这似乎是一个非常非常奇怪的问题(除非我错过了一些非常简单的东西): 代码: {{ 转储(导航) }} {% if nav == "顶部" %} 这个 这怎么可能?这似乎是一个非常非常奇怪的问题(除非我错过了一些非常简单的东西): 代码: {{ dump(nav) }} {% if nav == "top" %} <div class="well">This would be the nav</div> {% endif %} 输出: boolean true <div class="well">This would be the nav</div> 基本上,它会输出 if true,但并不意味着检查 true。 这很容易重现: {% set nav = true %} {% if nav == "top" %} ok {% endif %} 显示ok。 根据文档: Twig 允许到处表达。这些工作与常规工作非常相似 PHP,即使您不使用 PHP,您也应该感觉到 很舒服。 如果您在纯 PHP 中测试以下表达式: $var = true; if ($var == "top") { echo 'ok'; } 也会显示ok。 要点是:你不应该比较不同类型的变量。在这里,您将布尔值与字符串进行比较:如果您的字符串不为空或不只包含零,则它将计算为 true。 您还可以查看PHP手册以了解如何与不同类型进行比较。 编辑 您可以使用 sameas 测试进行严格比较,并避免类型杂乱问题。 如果有人需要否定字符串比较语句的结果,请使用下一个构造: {% set is_training = course_type == 'training' %} ... {% if not is_training %} ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.