在树枝模板中设置多维数组中单个对象的值

2024-01-09

对于项目需要,我需要在渲染之前更改一些表单字段数据。为此,我迭代表单元素并动态更改我需要的值。

问题是我无法改变价值。我收到这个错误:

Unexpected token "punctuation" of value "." ("end of statement block" expected).

我使用这段代码来更改值,但出现上面的错误:

{% set arr = arr|merge({'element': 'value'}) %}

有人知道问题出在哪里吗?

这是我使用的代码。

Twig 模板代码(我使用的示例代码)

<ul>
        {% dump (edit_form) %}
        {% for element in edit_form.children %}
            {% dump (element.vars) %}
            {% set element.vars = element.vars|merge({'name': 'My title (just for testing purpose)'}) %}

            <li>{{ element.vars.name }}</li>
        {% endfor %}
    </ul>

表单对象:

FormView {#637 ▼
  +vars: array:24 [▶]
  +parent: null
  +children: array:4 [▼
    "title" => FormView {#699 ▼
      +vars: array:24 [▼
        "value" => "le title"
        "attr" => []
        "form" => FormView {#699}
        "id" => "adminbundle_intro_title"
        "name" => "title"
        "full_name" => "adminbundle_intro[title]"
        "disabled" => false
        "label" => null
        "label_format" => "admin.intro.form.%name%"
        "multipart" => false
        "block_prefixes" => array:3 [▶]
        "unique_block_prefix" => "_adminbundle_intro_title"
        "translation_domain" => null
        "cache_key" => "_adminbundle_intro_title_text"
        "errors" => FormErrorIterator {#696 ▶}
        "valid" => true
        "data" => "le title"
        "required" => true
        "size" => null
        "label_attr" => []
        "compound" => false
        "method" => "POST"
        "action" => ""
        "submitted" => false
      ]
      +parent: FormView {#637}
      +children: []
      -rendered: false
    }
    "content" => FormView {#698 ▶}
    "isEnabled" => FormView {#702 ▶}
    "_token" => FormView {#711 ▶}
  ]
  -rendered: false
}

要更改数组的某个索引,最好使用扩展Twig,解决方案可能是这样的,

ProjectTwigExtension.php

namespace Your\Namespace;

class ProjectTwigExtension extends Twig_Extension {

    public function getFunctions() {
        return array(
            new Twig_SimpleFunction('set_array_value', array($this, 'setArrayValue'), ['needs_context' => true,]),
            new Twig_SimpleFunction('set_object_property', array($this, 'setArrayValue'), ['needs_context' => true,]),      
        );      
    }

    public function setArrayValue(&$context, $array_name, $index, $value) {
        if (!isset($context[$array_name])) return;
        if (is_array($context[$array_name])) $context[$array_name][$index] = $value;                
        elseif(is_object($context[$array_name])) {
            if (method_exists($context[$array_name], $index)) $context[$array_name]->{$index}($value);
            elseif(method_exists($context[$array_name], 'set'.$index)) $context[$array_name]->{'set'.$index}($value);
        }
    }

    public function getName() {
        return 'ProjectTwigExtension';
    }        
}

Add extension to twig

$twig->addExtension(new \Your\Namespace\ProjectTwigExtension());
/** ... code ... **/
$user = new User();
$user->setUserName('admin');

$twig->render('template.twig', [ 'somearray' => ['foo' => 'bar',], 'user' => $user, ]);

template.twig

{{ dump(somearray) }} {# output: array(1) { ["foo"]=> string(3) "bar" } #}

{{ set_array_value('somearray', 'foo', 'foobar') }}

{{ dump(array) }} {# output: array(1) { ["foo"]=> string(6) "foobar" }  #}

{{ dump(user.getUserName()) }} {# output: string(5) "admin" #}

{{ set_object_property('user', 'UserName', 'StackOverflow') }}

{{ dump(user.getUserName()) }} {# output: string(13) "StackOverflow" #}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在树枝模板中设置多维数组中单个对象的值 的相关文章

  • 纯旧 PHP 对象 (POPO) 一词的确切含义是什么?

    我想了解一下波波 我搜索了 popo 发现它代表 Plain Old Php Object 但我不确定 Plain Old Php Object 的确切含义 我想知道什么是 popo 以及在哪里使用它 谢谢 普通旧 在此处插入语言 对象是一
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • 使用控制器通过 codeigniter 处理返回的自定义 css 和 javascript 文件

    我正在开发一个 php codeigniter 项目 我正在考虑创建一个专门用于处理返回自定义 css 和 javascript 文件的控制器 在之前的项目中 我在视图文件的标头中包含了外部 CSS 和 JS 文件 但它们本质上必须是静态的
  • 当第二个参数包含运算符号时,为什么 ltrim 会删除一个字符? [复制]

    这个问题在这里已经有答案了 If I do ltrim 53 34567 53 ltrim 53 34567 53 ltrim 53 34567 53 I get 4567作为结果而不是34567 这种行为的解释是什么 ltrim 53 3
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • 将具有值的产品属性添加到 Woocommerce 中的产品

    我正在使用此代码添加自定义属性 attributes array array name gt Size options gt array S L XL XXL position gt 1 visible gt 1 variation gt
  • C# Byte[] 转 BCD 和 BCD 转 INT

    我有一个由 CashRegister Machine 创建的 Hex 文件 我必须读入这个文件 文件使用下面详述的格式 它就像套接字数据包 代码数据 2字节PLU 代码数据 7 字节单价数据 5字节数量数据 5字节数据总量 5字节PLU 名
  • 从 PHP 生成渐变颜色

    我想知道如何构建一个给出颜色代码和 显示该颜色的渐变 例如 function generate color int colorindex Generate 10 pale colors of this color 请帮我 迈克尔引用的代码相
  • PHP括号少IF条件不接受多个语句

    我从来都不喜欢控制结构中的括号 直到今天我才意识到它如何只接受括号内的一条语句而不是 if 条件 如果我有多个语句 它会抛出语法错误 这是 PHP 的工作方式还是我的 IDE 有问题 显然错误很明显 但我只是想确保这是正常的 如果您有任何其
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • PHPMailer 验证失败

    当我尝试在工作中使用 Windows Server 2012 上的 PHPMailer 来使用 SMTP 发送报告电子邮件时 出现身份验证失败错误 我在域上使用服务器管理员帐户 我非常确定密码是正确的 检查下面的代码 require PHP
  • Apache 虚拟主机始终重定向到 /dashboard

    我遇到的问题似乎是一个常见问题 但我找到的任何解决方案似乎都不适合我的情况 我正在尝试设置一个虚拟主机 以便我可以通过 mytestdomain local 访问我的 Laravel 安装的公共文件 但是当我在 google chrome
  • Oracle Blob 在 PHP 页面中作为 img src

    我有一个网站当前使用文件服务器上的图像 这些图像显示在页面上 用户可以根据需要拖放每个图像 这是使用 jQuery 完成的 图像包含在列表中 每张图片都非常标准 img src network path image png height 8
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • 从关系中合并 Laravel 中的集合

    假设我有 3 张桌子 Images Subject Style 关系是多对多 图像 主题 和多对多 图像 样式 现在我想做一些类似的事情 result subjectResult gt images gt merge styleResult
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • PHP:是否可以从文件内容(字符串)创建 SplFileObject 对象?

    例如 contents file get contents image png 是否可以从 contents 创建 SplFileObject 对象 Thanks php 有一些特殊的流包装器 http www php net manual

随机推荐

  • 我们应该在 Rails Factory 中使用 Faker 吗?

    I love Faker https github com stympy faker 我在我的seeds rb一直用真实的数据填充我的开发环境 我也刚刚开始使用工厂女工 https github com thoughtbot factory
  • 在 Android 中使用 color 和 color.darker?

    好的 我的应用程序中有一个整数变量 它是颜色的值 由颜色选择器根据我的喜好设置 现在 我需要使用该颜色和任何颜色的深色版本 现在我知道在标准 Java 中有一个 Color darker 方法 但在 Android 中似乎没有等效的方法 有
  • Linq 中的 SQL LIKE

    在添加这个问题之前 我确实在 stackoverflow 上搜索过类似的问题 但我找不到 互联网上的大多数问题都使用 LIKE 和字符串 例如 LIKE ABC 但我需要与不同表的现有列进行比较 我需要为 select 语句编写一个 lin
  • spring boot org.springframework.beans.factory.BeanCreationException:无法自动装配字段:

    我从 spring boot 开始 遇到一些配置问题 我无法自动装配某些服务 我收到 BeanCreationException 我的应用程序类 SpringBootApplication EnableAutoConfiguration C
  • 活动没有选项菜单

    我试图模拟点击菜单项存在于Toolbar using 机器人电动 使用以下代码 ShadowActivity shadowActivity Shadows shadowOf activity shadowActivity clickMenu
  • 如何查看导致 LINQ to SQL 中的 SubmitChanges 错误的 sql?

    我有一些 LINQ to SQL 有时会抛出 无法在具有唯一索引的对象 dbo Table 中插入重复的键行 IX Indexname 该语句已终止 有什么方法可以打开日志记录或至少调试数据上下文以查看引发错误时正在执行的 sql 吗 Up
  • 如何从文档中删除所有肖像图片

    我正在对文档图像进行 OCR 处理 我想检测所有图片并从文档图像中删除 我想保留文档图像中的表格 一旦我检测到图片 我就会将其删除 然后进行 OCR 我试图找到轮廓试图检测所有更大的区域 不幸的是它也检测到表格 还如何删除在文档图像中保留其
  • 通过 Python 代码使用 SignalR 服务器

    将 Python 与 SignalR 集成有哪些选项 Python 代码是大型第三方产品的一部分 与语言偏好无关 SignalR 服务器提供对现有 NET 产品的订阅 我们希望通过 Python 重用 NET SignalR 服务器 pyt
  • Java中如何随机选择图片?

    我正在制作一个将使用以下代码的程序 JLabel MyImage new JLabel new ImageIcon image1 png 但是 我想让随机图片出现 比如 image2 image3 image4 我该如何做到这一点 不使用L
  • @RequestMapping 在 Spring Boot 内部如何工作?

    RestController RequestMapping employee public class Employee RequestMapping save public void saveEmployee saving employe
  • blockIdx 与区块执行顺序相关吗?

    之间有什么关系吗blockIdx以及线程块在 GPU 设备上执行的顺序 我的动机是 我有一个内核 其中多个块将从全局内存中的同一位置读取 如果这些块能够同时运行 那就太好了 因为 L2 缓存命中很好 在决定如何将这些块组织成网格时 可以肯定
  • 如何识别无法嵌入文件的 YouTube 视频

    我有一个移动应用程序 可以在网络视图中嵌入一些 YouTube 视频 问题是 使用 YouTube Data API v3 我得到了 可嵌入 要显示的项目 但其中一些说 视频不可用 当我将相同的代码粘贴到 jsfiddle 或域或某种网络服
  • docker jboss7 战争提交。服务器启动失败且无法恢复

    有没有办法将 war 文件部署到在 docker 容器内运行的 Jboss as7 中 因为我的 jboss 服务器在 docker 提交后似乎失败了 Could not rename usr local share jboss stand
  • Keycloak + Kerberos 身份验证:机制级别:无效参数 (400) - 无法找到适当类型的密钥来解密 AP REP - 使用 HMAC 的 RC4

    我有以下内容 JBoss EAP 7 2 2 上的 Spring Web 应用程序 Machine CentOs CentO 上的 Keycloak 3 3 4 活动目录 我们在 OpenJDK 8 上运行 用户使用其 Active Dir
  • CG 3.0会泄露吗?

    我发现 CG 似乎存在内存泄漏 我通过 nvidia com 提交了一份报告 但如果您尝试这样做here http will sherif appspot com html d3d11 DirectWrite html 如果你删除那行 cg
  • 语法错误:编译 ejs 时参数列表后缺少 )

    编译 ejs 时 我收到错误 参数列表后缺少 我尝试了很多次 但找不到问题所在 这是导致错误的 ejs 这段代码有什么问题 h2 class page title Products h2 br a href admin products a
  • WPF Ribbon - 隐藏快速访问工具栏

    如何在 WPF 功能区中隐藏快速访问工具栏 For 您可以使用隐藏它VisualTreeHelper 上Loaded事件处理程序 只需将包含快速访问工具栏的行大小调整为 0 private void RibbonLoaded object
  • 安卓L | libusb_init 返回 LIBUSB_ERROR_OTHER (-99)

    我尝试使用libusb在未 root 的 Nexus 5 上 如建议的那样这种方法 https stackoverflow com a 24243605 902217 通过将 USB 文件描述符从 java 传输到本机端 我的应用程序通过以
  • 将空图添加到ggplot2中的facet_wrap

    我正在尝试创建 3 个图 其中所有面板应具有相同的大小 所以我认为解决方案可能是facet wrap 我的问题是 我不希望每个图表中有相同数量的图表 df lt data frame group c 1 1 2 2 2 3 3 name c
  • 在树枝模板中设置多维数组中单个对象的值

    对于项目需要 我需要在渲染之前更改一些表单字段数据 为此 我迭代表单元素并动态更改我需要的值 问题是我无法改变价值 我收到这个错误 Unexpected token punctuation of value end of statement