twig 相关问题

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

Symfony2 中的 Twig CamelCase 过滤器

所以我对 Symfony2 还很陌生,我正在尝试在 twig 模板中使用驼峰过滤器。但是,当我请求该页面时,我收到一条错误消息,指出过滤器不存在: 过滤器“骆驼...

回答 5 投票 0

如何在symfony / encore中调用html文件中的js函数?

我想在我的 symfony 项目中的内置 js 文件中调用一个函数。 我想在我的 symfony 项目中调用内置 js 文件中的函数。 <button type="button" class="btn btn-danger" onclick="doThis(this, {{ value_from_twig }})">Clickme</button> 但是即使我正确包含了该函数,也找不到该函数: {{ encore_entry_script_tags('tag') }} 我已经标记了要导出的功能。我还尝试在其他脚本标记中导入 neccecary 文件,但这不起作用。 我建议您向按钮添加一个类或 id,然后在 app.js 中实现该功能,如下例所示: base.html.twig <button id="clickme" data-from-twig="somevalue">MyButton</button> {% block javascripts %} {{ encore_entry_script_tags('app') }} {% endblock %} 在app.js中 document.addEventListener('DOMContentLoaded', function() { document.getElementById('clickme').onclick = function (event) { const targetElement = event.target; console.log(targetElement.getAttribute('data-from-twig')); } }); 通过这种方式,您可以向树枝模板添加功能。

回答 1 投票 0

从 PHP 和 Timber/Twig 中的高级自定义字段中对重复器字段进行排序

我正在尝试使用 Twig 1.34 的 WordPress Timber 插件实现对 WordPress 插件高级自定义字段 (ACF) 的转发器字段的输出进行排序。用于排序的基本 PHP 示例...

回答 3 投票 0

如何在 Symfony 中调用从网站删除按钮

我在我的项目中使用 Symfony,我希望在数据附近有一个按钮,您可以在其中从数据库中删除条目。 我尝试使用树枝延伸,但感觉这不是正确的方式......

回答 1 投票 0

使用Twig访问其他页面

我今天开始学习 Twig,想知道如何重定向到模板中的另一个页面。 这是我的index.php,我也在那里加载我的主页。 我今天开始学习 Twig,想知道如何重定向到模板中的另一个页面。 这是我的index.php,我也加载我的主页。 <?php require '../vendor/autoload.php'; $loader = new Twig_Loader_Filesystem('../recourses/views'); $twig = new Twig_Environment($loader); echo $twig->render('pages/home.twig', array( 'project_title' => getProjectTitle() )); 现在我的问题是:我怎样才能通过 <a href="...."></a> 到达此页面? 我不能只使用 <a href ="pages/home.twig">,因为它会显示代码而不是页面本身。 我尝试过搜索,但找不到解决方案。 希望有人可以向我解释一下。 如果我理解的话,你使用的不是 Symfony 标准版,而是一些 Symfony 组件 + Twig ? 在这种情况下,Twig 只是一个模板引擎,Symfony 功能缺失。 path函数(ShinDarth答案)是由Symfony标准版中定义的twig扩展提供的: http://symfony.com/doc/current/reference/twig_reference.html#path 所有 Symfony 标准版 功能都在同一页面定义: http://symfony.com/doc/current/reference/twig_reference.html 像你一样使用 Twig,你只能将路径作为变量传递并将其渲染为 {{ path_variable }} 假设您的路线名为 my_route, 然后通过树枝你可以简单地做: <a href="{{ path('my_route') }}">Link to my_route</a> 文档:http://symfony.com/doc/current/book/templated.html#linking-to-pages 最后问题解决了吗?如果是这样,你能解释一下你是怎么做到的吗?

回答 3 投票 0

Symfony2 在不同的 JQuery UI 选项卡中使用多种表单,但在单个页面中

我面临一个问题,我可以总结如下: 我有一个像这样的 TWIG 模板页面(reg.html.twig): {% 扩展“::base.html.twig” %} {% 块体 %} 我面临一个问题,我可以总结如下: 我有一个像这样的 TWIG 模板页面(reg.html.twig): {% extends "::base.html.twig" %} {% block body %} <ul class="tabs"> <li class="left"><a href="#tab1">tab1</a></li> <li class="left"><a href="#tab2">tab2</a></li> <li class="left"><a href="#tab3">tab3</a></li> <li class="right"><a href="#tab4">tab4</a></li> </ul> <div class="tabs_container"> <div id="tab1" class="blocco-tab"> <form action="{{ path('AAA') }}" method="post" {{ form_enctype(form) }}> <div id="name_field"> {{ form_row(form.name) }} </div><!-- /name_field --> <div id="address"> {{ form_row(form.addresses[0].road) }} </div><!-- /address_field --> </form> </div> <div id="tab2" class="blocco-tab"> <form action="{{ path('BBB') }}" method="post" {{ form_enctype(form) }}> <div id="surname_field"> {{ form_row(form.surname) }} </div><!-- /surname_field --> </form> </div> </div> <!-- contenitore_tabs --> {% endblock %} 字段 name、surname 和 addresses 属于示例 Symfony2 实体 Person。 addresses是地址集合的第一个也是唯一的元素(出于其他原因我需要它作为集合) 工作的 JS 文件是: jQuery(document).ready(function() { $(".blocco-tab").hide(); $("ul.tabs li:first").addClass("active").show(); $(".blocco-tab:first").show(); $("ul.tabs li").click(function() { $("ul.tabs li").removeClass("active"); $(this).addClass("active"); $(".blocco-tab").hide(); var activeTab = $(this).find("a").attr("href"); $(activeTab).fadeIn(); return false; }); }); 实体文件: class Person { protected $name; protected $surname; protected $addresses; public function __construct(){ $this->addresses = new ArrayCollection(); } } 在默认控制器中: public function tab1Action(Request $request){ $person = new Person(); $address = new Address(); $addr_coll = new ArrayCollection(); $addr_coll->add($address); $tab1_type = new Tab1Type(); $person->setAddresses($addr_coll); $form = $this->createForm($tab1_type, $person); if ($request->getMethod() == 'POST') { $form->bindRequest($request); if ($form->isValid()) /*ecc ecc ecc*/ } public function tab2Action(Request $request){ $person = new Person(); $tab2_type = new Tab2Type(); $form = $this->createForm($tab2_type, $person); if ($request->getMethod() == 'POST') { $form->bindRequest($request); if ($form->isValid()) /*ecc ecc ecc*/ } 实际上,我采取的方法是让每个 FormType 都具有我不需要渲染的所有字段,但将 'hidden' 和 'property_path' => false,因为我不能只渲染我想要的字段,因为其他字段会导致错误在运行时(它们为空),但我在以联合方式处理这两种情况时仍然遇到问题。 将每个表单放在不同的页面(==不同的路由),使用不同的控制器,一切正常,所以这不是与 symfony 基本使用相关的问题,而是将 N 个表单与 JQuery UI 集成在单个页面中,使得我哭了。 修复了我必须使用此选项卡的问题,我该如何解决? 我必须用一个 Action 来处理所有事情吗? 我必须制作一份表格吗? 我错过了什么吗? 预先感谢,我希望我已经清楚地解释了我的问题。 您只是将相同的变量用于不同的形式 <div id="tab1" class="blocco-tab"> <form action="{{ path('AAA') }}" method="post" {{ form_enctype(**form1**) }}> <div id="name_field"> {{ form_row(**form1**.name) }} </div><!-- /name_field --> <div id="address"> {{ form_row(**form1**.addresses[0].road) }} </div><!-- /address_field --> </form> </div> <div id="tab2" class="blocco-tab"> <form action="{{ path('BBB') }}" method="post" {{ form_enctype(**form2**) }}> <div id="surname_field"> {{ form_row(**form2**.surname) }} </div><!-- /surname_field --> </form> </div> 尝试使用单一表格 {% extends "::base.html.twig" %} {% block body %} <form action="{{ path('AAA') }}" method="post" {{ form_enctype(form) }}> <ul class="tabs"> <li class="left"><a href="#tab1">tab1</a></li> <li class="left"><a href="#tab2">tab2</a></li> <li class="left"><a href="#tab3">tab3</a></li> <li class="right"><a href="#tab4">tab4</a></li> </ul> <div class="tabs_container"> <div id="tab1" class="blocco-tab"> <div id="name_field"> {{ form_row(form.name) }} </div><!-- /name_field --> <div id="address"> {{ form_row(form.addresses[0].road) }} </div><!-- /address_field --> </div> <div id="tab2" class="blocco-tab"> <div id="surname_field"> {{ form_row(form.surname) }} </div><!-- /surname_field --> </div> </div> <!-- contenitore_tabs --> </form> {% endblock %} 然后你就有了ocontroller aaaAction() public function aaaAction(Request $request){ $person = new Person(); $address = new Address(); $addr_coll = new ArrayCollection(); $addr_coll->add($address); $person->setAddresses($addr_coll); $form = $this->createForm(new PersonType(), $person); if ($request->getMethod() == 'POST') { $form->bindRequest($request); if ($form->isValid()) /*ecc ecc ecc*/ } 以及表单生成器的类 class PersonType extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder ->add('name', null, array()) ->add('surname', null, array()) ->add('addresses', null, array()) ; } public function getName() { return 'person'; } public function getDefaultOptions(array $options) { return array( 'data_class' => 'Acme\YourBundle\Entity\Person', ); } } 正如我之前提到的,我解决了将所有选项卡包装在一个表单中的问题。您的两个解决方案都可以,谢谢您的宝贵时间。 Linuxatico 如果其他人遇到这个问题,你可以像这样解决它(我不确定这是否是最优雅的解决方案,但我认为它比为所有内容制作一个大表格更好)。此示例混合了配置文件和changePassword FOSUserBundle 形式: 在您的主展示模板中(在我的例子中为 Profile:show.html.twig): {% if profileForm is defined %} {% include 'MyBundle:Profile:edit.html.twig' with {'form':profileForm} %} {% else %} {% render 'MyBundle:Profile:edit' %} {% endif %} 重复更改密码: {% if passwdForm is defined %} {% include 'MyBundle:ChangePassword:changePassword.html.twig' with {'form':passwdForm} %} {% else %} {% render 'FOSUserBundle:ChangePassword:changePassword' %} {% endif %} 在您的控制器中(添加其他): if ($form->isValid()) { ..... else { return $this->container->get('templating')->renderResponse('FOSUserBundle:Profile:show.html.'.$this->container->getParameter('fos_user.template.engine'), array('user' => $user, 'profileForm' => $form->createView())); } 相应地添加 profileForm 和 passwdForm。就我而言,修改后的控制器是 ProfileController 和 ChangePasswordControllers(FOSUserBundle 覆盖)。 对于您的选项卡,如果发现任何错误,您可以添加 javascript(或 twig)来打开选项卡。 希望这有帮助:) 我就是这样做的: <div class="form-tabs"> <ul class="nav nav-tabs" role="tablist"> <li class="nav-item"> <a class="nav-link active" id="basic-tab" data-toggle="tab" href="#basic" role="tab">Basic</a> </li> <li class="nav-item"> <a class="nav-link" id="advanced-tab" data-toggle="tab" href="#advanced" role="tab">Advanced</a> </li> </ul> <div class="tab-content"> <div class="tab-pane fade show active" id="basic" role="tabpanel"> {{ form_start(formsimple, {'attr': {'novalidate': 'novalidate'}}) }} {{ form_widget(formsimple) }} {{ form_end(formsimple) }} </div> <div class="tab-pane fade" id="advanced" role="tabpanel"> {{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }} {{ form_widget(form) }} {{ form_end(form) }} </div> </div> 在控制器中: $formTypesimple = EventTypeMultiSimple::class; $formType = EventTypeMulti::class; $form = $this->createForm($formType, $event, [ 'validation_groups' => ['create', 'Default'], 'user_choices' => $eventChoices, ]); $formsimple = $this->createForm($formTypesimple, $event, [ 'validation_groups' => ['create', 'Default'], 'user_choices' => $eventChoices, ]); return $this->render('Dashboard/Shared/Event/add-edit.html.twig', [ "event" => $event, "form" => $form->createView(), "formsimple" => $formsimple->createView(), ]);

回答 5 投票 0

我的资产仅在生产中未链接到我的树枝文件中

我目前正在将我的应用程序从 Webpack 迁移到 Vite。 我的应用程序正在使用 React 和 Symfony。 所以我遵循了 vite-bundle 和 vite-symfony-plugin 说明。开发中一切都工作得很好

回答 1 投票 0

有没有办法在 PHP Twig 中比较忽略大小写的字符串?

我正在 PHP 中使用树枝,我需要添加一种方法来过滤结果。我决定通过注入过滤关键字来使用模板语言来完成此操作。 (我的数据获取所有类别...

回答 1 投票 0

Unescape 或 html 解码

我正在使用twig 1.12.2。我的代码从代码隐藏生成一些元素,当使用最新版本的 twig 渲染这些元素时,它们会进行 html 编码 {% for files_folders %} 我正在使用twig 1.12.2。我的代码从代码隐藏生成一些元素,当使用最新版本的 twig 渲染这些元素时,它们会被 html 编码 {% for item in files_folders %} <tr class="{{ cycle(['tr_odd', 'tr_even'], loop.index) }}"> <td><img src="../templates/images/sharepoint/{{ item.ContentType }}.gif" border="0" alt=""/></td> <td>{{ item.Link }}</td> <td>{{ item.Modified }}</td> <td>{{ item.FileSize }}</td> <td>{{ item.FileType }}</td> </tr> {% endfor %} 这将输出这个 <tr class="tr_even"> <td><img src="../templates/images/sharepoint/Document.gif" border="0" alt=""/></td> <td>&lt;a href=&#039;?download=/ddd.png&#039;&gt;ddd.png&lt;/a&gt;</td> <td>2013-03-04 17:47:38</td> <td>64.8 KB</td> <td>png</td> </tr> <tr class="tr_odd"> <td><img src="../templates/images/sharepoint/Document.gif" border="0" alt=""/></td> <td>&lt;a href=&#039;?download=/asdasd.png&#039;&gt;asdasd.png&lt;/a&gt;</td> <td>2013-03-03 20:01:52</td> <td>66.04 KB</td> <td>png</td> </tr> 当我调试并在将数据发送到 twig 之前查看数据时,它不会被转义。我还没有找到任何替代 {{ item.Link }} 来按原样呈现数据。 谢谢 您可以使用 raw 过滤器使 twig 渲染原始 HTML。 {% autoescape %} {{ var|raw }} {# var won't be escaped #} {% endautoescape %} 来源 使用 |raw 时应小心。说数据是安全的,意味着您 100% 信任它。 我个人建议使用自定义树枝过滤器: class CustomExtension extends \Twig_Extension { public function getFilters() { return array( new \Twig_SimpleFilter('unescape', array($this, 'unescape')), ); } public function unescape($value) { return html_entity_decode($value); } } 将以下内容添加到您的 services.yml(或者翻译为 xml)。 services: ha.twig.custom_extension: class: HA\SiteBundle\Twig\CustomExtension tags: - { name: twig.extension } 或http://twig.sensiolabs.org/doc/filters/raw.html {% autoescape false %} {{ your_item }}{# your_item won't be escaped #} {% endautoescape %} 如果您使用 Drupal 8 并且 raw 或 autoscape 都不起作用,则可能会发生这种情况,因为您尝试打印的变量是一个包含安全输出模板的渲染数组(例如,一个 hl2br 过滤器)。 在这种情况下,您需要通过渲染数组访问该值并对其进行过滤,例如: {% autoescape false %} {{ item.content['#context']['value'] }} {% endautoescape %}

回答 4 投票 0

如何翻译 Symfony 3 形式?

翻译树枝模板中的内容似乎简单明了:我运行 bin/console Translation:update 来填充翻译文件。问题在于它似乎忽略了形式。 创建后

回答 3 投票 0

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

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

回答 1 投票 0

递归 html 调用未返回正确的值

这里我尝试递归调用一个html模板,它在类别中循环,其中包含附加到某些类别的某些自定义字段,一切正常,但计数器(

回答 1 投票 0

变量“produit”不存在

我是 Symfony 的初学者。我陷入困境,因为我无法调试我的电子商务应用程序。我实在不明白问题出在哪里。我正在尝试显示数据库中的数据,但它给了我一个错误

回答 1 投票 0

如何在 Symfony 6 中安装 select2

我正在尝试使用 select2 多选框(药丸盒)重新填充表单字段。 我想使用 CDN 安装 select2: https://select2.org/getting-started/installation#using-select2-from-a-cdn

回答 1 投票 0

如何截断控制器中的树枝数组[行]?

我有一些树枝数组要显示在数据表上。 ` $值 = 数组( $row['成员'] 。 '-'。 $行['电子邮件'], $row['交易日期'], $...

回答 1 投票 0

Drupal 中如何从段落中的字段(媒体->文档)获取链接?

我有一个包含 3 个字段的 Drupal 段落: “文件”字段是类型为“文档”的“媒体”字段 我正在尝试在这个

回答 1 投票 0

Drupal 10 视图:字段/自定义文本显示字段的翻译标签

我正在使用 Drupal 10 构建一个双语网站,并使用视图来显示内容项列表。在我看来,我正在使用 field: Custom text 按照我想要的方式格式化每个项目的预告片。 我有

回答 1 投票 0

Shopware 树枝小提琴

我想在 https://shopware.foo/ 中渲染一个树枝表达式 {{ page.product.translated.description|raw|striptags|sw_sanitize|u.truncate(125, '...') }} 有 https://twigfiddle.com/ 但它没有

回答 1 投票 0

树枝和 Nunjucks 问题

我是编程新手,我正在使用PHP作为后端并学习MVC,请问如果我们使用Twig,我们还需要像Nunjucks这样的前端模板引擎吗?据我所知,Nunjucks 是模板 e...

回答 1 投票 0

如何修复由 twig 中的简单逻辑导致的错误网关错误?

我正在为竞赛活动制作一个网络应用程序,需要在网页上创建/编辑/删除按钮,这样我就不需要在后端做所有事情。 它是基于 PHP/Symfony 构建的,我使用 TWIG 作为...

回答 1 投票 0

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