twig 相关问题

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

导入的 Twig 宏不显示任何内容,即不工作

我正在尝试实现某种宏自动加载。 这个想法是定义一堆宏并在所有接下来的模板文件中使用它们。 我正在尝试这样做: 我正在尝试实现某种宏自动加载。 这个想法是定义一堆宏并在所有接下来的模板文件中使用它们。 我正在尝试这样做: <?php define('ROOT_FRONT', '/path/to/files/'); define('LAYOUT_DIR', ROOT_FRONT . 'layout/'); include(ROOT_FRONT . 'lib/Twig/Autoloader.php'); Twig_Autoloader::register(); $twig_loader = new Twig_Loader_Filesystem(array(LAYOUT_DIR, ROOT_FRONT)); $twig = new Twig_Environment($twig_loader, array( 'charset' => 'ISO-8859-15', 'debug' => !!preg_match('@\.int$@', $_SERVER['SERVER_NAME']), 'cache' => $_SERVER['DOCUMENT_ROOT'] . '/cache/twig/' )); $macro_code = ''; foreach(array_filter( array_diff( scandir(LAYOUT_DIR . 'macros/'), array('..','.') ), function($file) { return strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'twig' && is_file(LAYOUT_DIR . 'macros/' . $file); } ) as $file) { $info = pathinfo($file); $macro_code .= '{% import \'macros/' . $info['basename'] . '\' as macros_' . $info['filename'] . ' %}'; } $twig ->createTemplate($macro_code) ->render(array()); $twig->display('index.twig', array()); 如果我有一个文件,比如说,macro/clearfix.twig,它将在$macro_code中生成此模板代码: {% import 'macros/clearfix' as macros_clearfix %} macro/clearfix.twig里面的代码是这样的: {% macro clearfix(index, columns) %} {% if index is divisible by(columns) %} <div class="clearfix visible-md-block visible-lg-block"></div> {% endif %} {% if index is even %} <div class="clearfix visible-sm-block"></div> {% endif %} {% endmacro %} 然后,在index.twig里面,我有这个: {{ macros_clearfix.clearfix(index=2, columns=6) }} 但是什么也没有显示。 但是,以下代码可以工作: {% set index = 2 %} {% set columns = 6 %} {% if index is divisible by(columns) %} <div class="clearfix visible-md-block visible-lg-block"></div> {% endif %} {% if index is even %} <div class="clearfix visible-sm-block"></div> {% endif %} 我可能做错了什么? 我是否误解了什么或错误地应用了它? TL;博士: Twig 要求您将宏加载到将使用它们的文件中。 只需创建自定义函数即可完成您想要的操作。 Twig(至少 v1.30)没有实现宏继承。 这要求您加载要在每个文件上使用的每个单个宏。 做到这一点的唯一方法是使用完全用 PHP 编写的函数。 这就是我已经解决的问题: index.php: <?php define('ROOT_FRONT', '/path/to/files/'); define('LAYOUT_DIR', ROOT_FRONT . 'layout/'); include(ROOT_FRONT . 'lib/Twig/Autoloader.php'); Twig_Autoloader::register(); $twig_loader = new Twig_Loader_Filesystem(array(LAYOUT_DIR, ROOT_FRONT)); $twig = new Twig_Environment($twig_loader, array( 'charset' => 'ISO-8859-15', 'debug' => !!preg_match('@\.int$@', $_SERVER['SERVER_NAME']), 'cache' => $_SERVER['DOCUMENT_ROOT'] . '/cache/twig/' )); // ~ magic happens here ~ foreach(include(LAYOUT_DIR . 'fn.php') as $k => $fn) { $twig->addFunction(new Twig_SimpleFunction("fn_$k", $fn)); } $twig->display('index.twig', array()); fn.php: <?php return array( 'clearfix' => function($index, $columns){ $html = ''; if(!($index % $columns)) { $html .= '<div class="clearfix visible-md-block visible-lg-block"></div>'; } if(!($index & 1)) { $html .= '<div class="clearfix visible-sm-block"></div>'; } return $html; } ); index.twig: {{ fn_clearfix(index=2, columns=6) }} 这样,您的所有代码都会被整齐地索引,新函数会自动创建,并且很容易根据您的喜好进行扩展。 这可能是最糟糕的主意,但它确实有效。 宏 从 Twig 2.0 开始,文件中导入的宏在子模板中不再可用(例如通过包含调用)。您需要在使用宏的每个文件中显式导入宏。 来自 https://twig.symfony.com/doc/1.x/deprecated.html

回答 2 投票 0

EasyAdmin3:将附加变量传递给twig-template(编辑页面)

背景 我想在编辑页面中显示与实体无关的信息。根据官方文档,可以使用configureResponseParameters-function解决。 问题 所以我执行...

回答 1 投票 0

Symfony 如何在 base.html.twig 上包含控制器

我有一个小问题,我是 symfony 的新手,我创建了一个控制器和一个菜单模板,我想将其集成到我的 base.html.twig 中。 我绝对需要调用控制器,因为我...

回答 3 投票 0

允许反斜杠 url symfony2

我正在使用 symfony 2.5 和 Php 5.3.13 制作一个文件资源管理器应用程序。 这里是我的 scanAction 列出了目录的文件: 公共函数listAction($client) { $dir_clients = $this->con...

回答 1 投票 0

Symfony twig 渲染组件,带有为子域生成的 url,就像在主域上一样

我有一个导航和页脚的树枝模板,其中包含指向主页的链接。 {{ url("help") }} -> https://main.com/help 我正在同一代码库的子域上渲染它们。但我不想拥有

回答 1 投票 0

在 TWIG 中转义简单引用

我正在使用这个 TWIG 查询: {% if xpath('md_file','//存档/DOSSIER_MDPH[包含("#FILENAME#", Identifiant)]') %}{{ xpath('md_file','//存档/DOSSIER_MDPH[包含("#文件名#",

回答 1 投票 0

将多个树枝变量连接在一个括号中

我想将3个变量连接在一个括号中,就像PHP一样。 IE 在 PHP 中: 获取图像大小($路径。$图像) 我们可以用点符号连接变量。我怎样才能在树枝中重现这个? {{ 路径.key }} ...

回答 1 投票 0

使用 CRUD 控制器显示信息(EasyAdmin 4 + Symfony 7)

我想知道是否有一种方法可以使用 EasyAdmin 4 和 Symfony 7 将内容包含在 CRUD 控制器中。我已阅读所有文档并在互联网上搜索,但我找不到任何内容

回答 1 投票 0

属性和方法之一都不存在并且在类中具有公共访问权限,但存在

我有一个完全不明白的问题。 属性“selected”和方法“selected()”、“getselected()”/“isselected()”/&

回答 1 投票 0

隐藏页面组件

我正在尝试删除画布外购物车上的折扣/促销字段。这是具有该字段代码的页面的路径:storefront/page/checkout/cart 我正在使用...添加一个插件

回答 1 投票 0

尽管调试时存在路由,但无法生成路由的 URL

我提出了这个例外: 路由未找到异常 运行时错误 HTTP 500 内部服务器错误 模板渲染期间抛出异常(“无法生成 URL f...

回答 3 投票 0

如何以编程方式设置树枝块内容?

是否可以通过 PHP 代码设置 twig 模板块的值?我正在从不同的模板引擎迁移,我需要一个桥来设置块的值而不使用树枝模板。 ...

回答 2 投票 0

如何在ajax请求中与formData一起发送附加数据

我有一个关于文件输入值更改的以下ajax请求。 $(':文件').change(函数(){ var file = this.files[0]; var formData = new FormData($('form')[0]); 变量 ID= $...

回答 4 投票 0

Symfony2 Twig url() https

我需要生成一个使用安全 HTTP 协议的绝对 URL,因为它是第三方支付网关解决方案使用的支付页面模板,需要...

回答 1 投票 0

无法用twig宏显示评论树

我正在尝试使用 twig 宏渲染评论树,但不断收到以下错误: “既不是属性“comments”,也不是方法“comments()”、“getcomment...

回答 1 投票 0

Twig 替换字符串中的加号和两个空格

我对 Twig 还很陌生,所以请耐心等待:) 我有一个像这样的字符串: 一些+名字 我希望将其更改为 某个名字 我正在使用替换过滤器,效果很好。但是我需要更换...

回答 2 投票 0

使用twig将变量过滤到url中

我有一个变量 {{ name }} 输出治疗和支持。我需要删除 & 符号并将名称转换为带有 twig 的可用 url slug,例如:治疗支持。 我有

回答 3 投票 0

如何在Twig中调用'time_diff'过滤器

如何在 Twig 中调用“time_diff”函数 代码 {{ post.created_at|time_diff }} 输出 过滤器“time_diff”不存在

回答 5 投票 0

根据其他实体的 ID 编辑我的实体

我想根据Twig中表单中的测试ID编辑我的类别实体并将其绑定到数据库, 当我打开编辑时,它会显示我编辑的表单,但它们不会绑定数据库中的 id 测试...

回答 1 投票 0

与选民一起进行symfony表演

在我的 symfony 应用程序中,我使用投票者来检查用户是否可以访问某些功能。 现在,我有一个导航栏,其中根据这些权限显示或隐藏菜单。 这个导航栏单独渲染...

回答 2 投票 0

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