Twig是一款适用于PHP的现代,快速,灵活且安全的模板引擎。为Symfony创建并由Drupal 8采用。
所以我有以下代码: {{ use('frontend/assets/AppAsset')}} {{ register_app_asset() }} {{ this.beginPage() }} 但是...
通常,应该有两个输出都填充了分类ID - 不知何故,有一个“占位符”元素会导致错误。我真的不明白它从哪里来,任何想法......
是否有人尝试执行诸如 {{ attribute(item, 'subItem.title') }} 之类的操作来访问如下伪代码所示的结构: 类项目{ 私人$子项目; 公共职能...
Wordpress - 从 Timber Plugin 1.x 切换到基于 Composer 的 Timber 1.x 错误致命错误:未捕获的 LogicException:无法注册扩展
我目前正在尝试将 Timber 的 ouf 网站版本切换为其 Composer 版本。通过在函数中初始化 Timber,我设法加载供应商并使管理员毫无问题地返回...
我发现自己对 Twig 继承的运作方式有点困惑,我想确保我正确地使用它。 目前,我正在探索两种选择:一种能够完全按照预期运行(alth...
公共功能项目(请求$request) { if ($request->isMethod('post')) { $validatedData = $request->validate([ '标题' => '必填', '描述...
将 4 位字符串中的第三个字符替换为 Twig 中的另一个字符
我的目标是从 4 位数字字符串中屏蔽一位数字。我不想要 2451,而是想要 24*1。 我尝试了 {{ my_var|replace(slice(2, 1): '*') }} 但这会引发以下错误:函数...
我能够向表单本身添加一个类,例如通过向 form_start/form_row 添加第二个参数等方式向 form_row 添加一个类,就像您在屏幕截图中看到的那样。 但我没能成功...
我知道这真的很微不足道,也不那么重要,但它可以节省我的一生...... 您知道可以在 PHP 中的 if 块中声明变量 if( $row = $sql->fetch ){ //做一些事情...
我正在尝试实现某种宏自动加载。 这个想法是定义一堆宏并在所有接下来的模板文件中使用它们。 我正在尝试这样做: 我正在尝试实现某种宏自动加载。 这个想法是定义一堆宏并在所有接下来的模板文件中使用它们。 我正在尝试这样做: <?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
EasyAdmin3:将附加变量传递给twig-template(编辑页面)
背景 我想在编辑页面中显示与实体无关的信息。根据官方文档,可以使用configureResponseParameters-function解决。 问题 所以我执行...
Symfony 如何在 base.html.twig 上包含控制器
我有一个小问题,我是 symfony 的新手,我创建了一个控制器和一个菜单模板,我想将其集成到我的 base.html.twig 中。 我绝对需要调用控制器,因为我...
我正在使用 symfony 2.5 和 Php 5.3.13 制作一个文件资源管理器应用程序。 这里是我的 scanAction 列出了目录的文件: 公共函数listAction($client) { $dir_clients = $this->con...
Symfony twig 渲染组件,带有为子域生成的 url,就像在主域上一样
我有一个导航和页脚的树枝模板,其中包含指向主页的链接。 {{ url("help") }} -> https://main.com/help 我正在同一代码库的子域上渲染它们。但我不想拥有
我正在使用这个 TWIG 查询: {% if xpath('md_file','//存档/DOSSIER_MDPH[包含("#FILENAME#", Identifiant)]') %}{{ xpath('md_file','//存档/DOSSIER_MDPH[包含("#文件名#",
我想将3个变量连接在一个括号中,就像PHP一样。 IE 在 PHP 中: 获取图像大小($路径。$图像) 我们可以用点符号连接变量。我怎样才能在树枝中重现这个? {{ 路径.key }} ...
使用 CRUD 控制器显示信息(EasyAdmin 4 + Symfony 7)
我想知道是否有一种方法可以使用 EasyAdmin 4 和 Symfony 7 将内容包含在 CRUD 控制器中。我已阅读所有文档并在互联网上搜索,但我找不到任何内容
我有一个完全不明白的问题。 属性“selected”和方法“selected()”、“getselected()”/“isselected()”/&
我正在尝试删除画布外购物车上的折扣/促销字段。这是具有该字段代码的页面的路径:storefront/page/checkout/cart 我正在使用...添加一个插件
我提出了这个例外: 路由未找到异常 运行时错误 HTTP 500 内部服务器错误 模板渲染期间抛出异常(“无法生成 URL f...