ZF2 fileprg 与集合中的文件

2024-02-18

我无法得到fileprg用于处理集合中的文件的插件。 我正在尝试使用上传多个文件FormCollections, 但在$form->getData()没有与我的收藏或文件相关的密钥。

我用简单的方法测试了表单和 fileprgfile input(以相同的形式)并且它可以上传/重命名并且位于$form->getData().

我缺少什么?为了让它发挥作用,需要对集合做一些特别的事情吗?


在文件中\Zend\Mvc\Controller\Plugin\FilePostRedirectGet你想看的两个函数是getNonEmptyUploadData(即提供回调函数)和traverseInputs(这是一个荣耀的foreach检查每个输入过滤器,然后通过上面的回调运行它和值)。

要允许此插件在集合上工作,您需要扩展该类并更改上述函数:

/**
 * Traverse the InputFilter and run a callback against each Input and associated value
 *
 * @param  InputFilterInterface $inputFilter
 * @param  array                $values
 * @param  callable             $callback
 * @return array|null
 */
protected function traverseInputs(InputFilterInterface $inputFilter, $values, $callback)
{
    $returnValues = null;
    foreach ($values as $name => $value) {
        if (!$inputFilter->has($name)) {
            continue;
        }

        $input = $inputFilter->get($name);
         if ($input instanceof InputFilterInterface && is_array($value)) {

            if ($input instanceof CollectionInputFilter) {
                $retVal = null;
                foreach ($value as $k => $val) {
                    $retVal2 = $this->traverseInputs($input->getInputFilter(), $val, $callback);
                    if ($retVal2)
                        $retVal[$k] = $retVal2;
                }
            } else
                $retVal = $this->traverseInputs($input, $value, $callback);

            if (null !== $retVal) {
                $returnValues[$name] = $retVal;
            }
            continue;
        }

        $retVal = $callback($input, $value);
        if (null !== $retVal) {
            $returnValues[$name] = $retVal;
        }
    }
    return $returnValues;
}

/**
 * Traverse the InputFilter and only return the data of FileInputs that have an upload
 *
 * @param  InputFilterInterface $inputFilter
 * @param  array                $data
 * @return array
 */
protected function getNonEmptyUploadData(InputFilterInterface $inputFilter, $data)
{
    return $this->traverseInputs(
        $inputFilter,
        $data,
        function ($input, $value) {
            $messages = $input->getMessages();
            if (is_array($value) && $input instanceof FileInput && empty($messages)) {
                $rawValue = $value;
                if (
                    (isset($rawValue['error']) && $rawValue['error'] !== UPLOAD_ERR_NO_FILE)
                    || (isset($rawValue[0]['error']) && $rawValue[0]['error'] !== UPLOAD_ERR_NO_FILE)
                ) {
                    return $value;
                }
            }
            return;
        }
    );
}

这是一个差异,显示了哪些行被更改:https://github.com/rafam31/zf2/commit/c481e7404faf93beb4c67a6a4b7490fec15d279b https://github.com/rafam31/zf2/commit/c481e7404faf93beb4c67a6a4b7490fec15d279b

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

ZF2 fileprg 与集合中的文件 的相关文章

  • Drupal:需要上传文件吗?

    由于某种原因 当我尝试要求上传文件时 我的表单中断了 这是它的代码 form id upload form form form id array type gt fieldset description gt t This is a uti
  • ZF2 共享模块事件管理器

    当特定情况发生时 我需要在每个模块中实现一个事件触发器 我还需要所有其他模块在触发该事件时必须执行某些工作 请注意这一点 我正在尝试创建一些通用端点 我可以在其中发送触发器 并且所有模块都需要监听 但我在弄清楚如何实现这一点时遇到了一些麻烦
  • 在 Struts 2 中使用单个文件标签上传多个文件

    我想使用单个 Struts 2 文件标签上传多个文件 就像在 Gmail 中一样 我们使用 CTRL 键来选择多个文件来附加多个文件 我知道如何上传多个文件 但我想使用单个文件标签 我在一个小画廊应用程序中上传多个文件 如果您的操作已设置为
  • Smarty 3 如何与 Zend Framework 2 一起使用?

    我很久以前就使用过 PHP5 目前正在尝试刷新我的知识 并通过 Zend Framework 2 和 Smarty 3 的知识来增强它 以实现一个可能的项目 我目前正在尝试弄清楚如何使用 Smarty 3 作为 Zend Framework
  • ios 无法将图片上传到服务器

    您好 我正在尝试将图像从我的 IOS 设备上传到服务器 这是我上传图像的代码 IBAction btnUpload id sender if self imageViewGallery image nil UIAlertView Error
  • 保留表单数据的策略(在选项卡/浏览器关闭时)

    我的任务管理应用程序有一个问题 用户偶尔会关闭浏览器 选项卡 并且他们输入的信息会消失 因为他们不小心关闭了浏览器 选项卡 导致他们输入的文本丢失 有些可以花半个小时输入文字 所以我必须提供一个解决方案 我有几个想法 但希望了解最好的解决方
  • Django 模型表单中的必填字段

    我有一个表格 当我也不想要它们时 会根据需要显示几个字段 这是来自 models py 的表格 class CircuitForm ModelForm class Meta model Circuit exclude lastPaged d
  • Bootstrap 验证器表单插件:如何更改反馈图标

    The 引导验证器 http 1000hz github io bootstrap validator 插件有助于验证表单字段 提供一系列很酷的功能 这些功能之一是反馈图标 默认为字形 假设我想用 font Awesome 替换 glyph
  • jsp/servlet 从数组填充下拉框

    大家好 我正在尝试创建一个表单 允许您为某个主题创建一个实验室 它有一个下拉框 您可以在其中选择与该用户相关的主题 但是 当我去加载页面时 我收到此错误g apache jasper JasperException java lang Nu
  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • ebean 映射到 BYTEA 的数据类型是什么?

    我有一个游戏 2 0 2 需要在数据库中存储一些文件的应用程序 我们使用 Ebean 作为 ORM 我相信我的数据库中需要一个 BYTEA 列来存储该文件 但我不确定在我的模型中使用什么数据类型 我应该使用某种Blob 或者只是一个byte
  • 通过按 Enter 键提交表单而不使用提交按钮

    好吧 我试图通过按 Enter 键来提交表单 但不显示提交按钮 如果可能的话 我不想涉足 JavaScript 因为我希望一切都能在所有浏览器上运行 我知道的唯一 JS 方式是使用事件 现在的表格看起来像这样
  • WCF 4.0 REST 上传 MS-Excel 文件

    我正在尝试通过 WCF REST 服务上传 MS Excel 文件 我使用了下面帖子中给出的解决方案 RESTful WCF服务图片上传问题 https stackoverflow com questions 664712 restful
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja
  • PHP上传文件产生错误代码4。为什么?

    HTML
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • Rails - 格式日期字段

    如何设置 date field 的日期格式样式 我得到了以下表格 这是为日期字段呈现以下 HTML
  • PHP FTP_PUT 上传到目录

    我正在自学PHP 一本名为 PHP完全参考 PHP5 2 的书 我目前正在使用第 11 章 FTP 上传 删除 makedir 等 但遇到了一些本书未涵盖的问题 根据我的教科书 这是上传到服务器的简单代码 connect ftp conne
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E

随机推荐

  • JAXB 在 Tomcat 9 和 Java 9/10 上不可用

    TLDR 在 Java 9 10 上 Tomcat 中的 Web 应用程序无法访问 JAXB 即使其参考实现存在于类路径中 Edit 不 这不是重复的如何解决 Java 9 中的 java lang NoClassDefFoundError
  • Android 2.3 SDK可以交叉编译到早期版本吗?

    我有一个 Android 应用程序 自操作系统 v1 以来就已上市 从那以后我就再也没有碰过它 因此忘记了 Android 开发的一切 使用新的 Android 2 3 SDK 我可以编译我的应用程序 以便以前操作系统版本的用户也可以使用它
  • Xcode 5 崩溃——Xcode 意外退出

    当我在项目导航器中选择任何文件或尝试编辑它时 App Store 中的 Xcode 5 崩溃 我已经删除了应用程序的所有插件和派生数据 但它不断崩溃 有谁知道如何解决这个问题以及为什么会发生这种情况 以下是错误的第一部分 Exception
  • 使用 ncurses 在 Linux 中构建 HelloWorld C++ 程序

    我成功跑了sudo apt get install libncurses5 dev 然后在我的 Eclipse 窗口中尝试构建以下内容HelloWord cpp程序 include
  • 查找数字数组中最大差异的算法

    我有一个包含几百万个数字的数组 double const data new double 3600000 我需要遍历数组并找到范围 数组中的最大值减去最小值 然而 有一个问题 我只想找到最小值和最大值在 1 000 个样本之内的范围 所以我
  • 抽屉式导航无法关闭

    我的应用程序中的导航抽屉没有关闭 我正在使用活动而不是片段 当我单击中的任何项目时listview 它会按应有的方式打开其他活动 但当我回去时 抽屉仍然打开 我尝试过使用DrawerLayout closeDrawers 但它不起作用 如何
  • 如何缩短 C# 中的路径并保持其有效

    我工作的地方 目录的名字很长 而且目录树也很长 而且我遇到了外部应用程序中文件夹路径名太长的问题 我无法更改此外部应用程序 但我可以给它缩短的路径名 我知道微软操作系统可以缩短路径名 例如转换C TooLongName TooLongSub
  • 通过 Id 和 Name 获取下一个和上一个 sql 行,EF?

    假设我们在 SQL Server 表中有以下数据 按名称排序 Id Name LName 5 Abbas Dayyan 3 Mohammad KD 4 Nima Ahmad 1 Omid Zangene 2 Pedram Ahmadi 我们
  • 使用声纳 checkstyle 插件尊重 @SuppressWarnings

    是否有可能使用 Checkstyle 插件配置 SonarQube 5 1 以遵守 SuppressWarnings deprecation 注解 我不想关闭 避免使用已弃用的方法 规则 我只想 SonarQube 尊重 SuppressW
  • 跨多个进程使用双端队列对象

    我试图减少读取大约 100 000 个条目的数据库的处理时间 但我需要它们以特定的方式格式化 为了尝试做到这一点 我尝试使用 pythonmultiprocessing map函数工作完美 只是我似乎无法获得任何形式的队列引用来跨它们工作
  • 为什么此 WebGL 帧缓冲区使用会抛出 FRAMEBUFFER_UNSUPPORTED?

    我正在尝试创建一个 WebGL 选择缓冲区 有人能看到我在这里做错了什么吗 我在 Mozilla 5 0 X11 Linux x86 64 rv 2 0b3pre Gecko 20100724 Minefield 4 0b3pre 和 Ch
  • Mule Salesforce Batch 中的错误处理

    我正在尝试将一组帐户从 CSV 文件加载到 Salesforce 中 我已经配置了常用的 Datamapper 带有批提交的 Upsert SFDC 步骤和仅处理失败的批步骤 目前为日志 我的 OnComplete 有一个简单的记录器 我故
  • 如何处理 Mac 上 VS Code 中的 C++ 头文件 #include 错误?

    我的 Mac 上的 VS Code 产量 包含错误 for 头文件 and 第三方库 wxWidgets在这种情况下 我阅读了我能找到的所有内容 调整了 c cpp properties json 中的 includePath 设置 但没有
  • JMeter 框架

    我最近开始学习 JMeter 来对我们的应用程序进行性能测试 我有一个测试计划 jmx 并使用 Jenkins Ant 定期运行它 到目前为止一切都很好 我的问题是 我们有一个关键字驱动的框架 TestNG 等用于功能测试工具 QTP Se
  • 从 PDO 准备好的语句中检索(或模拟)完整查询

    我偶然发现这个问题 https stackoverflow com questions 210564 pdo prepared statements从两年前开始 在准备好的语句上调用 PDOStatement execute 时 有没有办法
  • ModuleNotFoundError:没有名为“telethon”的模块

    我已经使用以下代码安装了 telethon sudo pip3 install telethon 我尝试重新安装它并收到以下消息 Requirement already satisfied pyasn1 gt 0 1 3 in usr lo
  • vb6中删除字符串左右两侧的某些字符(TrimChar)

    我想删除字符串中一些错误使用的某些字符 我想只删除此文本之外的点 正如你所看到的 我不能为此使用替换 我必须找到一种方法来仅删除字符串左侧和右侧的字符 而这些点只是我要删除的字符的示例 我有一系列不需要的字符 所以在处理之后字符串应该看起来
  • OPENGL混合功能——以分层的方式缓慢替换颜色

    我想做的是在亮红色 1 0 0 1 上添加带有 alpha 0 1 0 0 0 2 的深红色 对于第一层 它工作正常 结果是 0 9 0 0 1 然而 当红色值达到 0 5 时 它不能低于该值 第一层用以下等式进行演示 并且工作正常 glB
  • Javascript正则表达式多重匹配[重复]

    这个问题在这里已经有答案了 我正在尝试使用 javascript 在具有查询字符串参数的 url window location href 上执行正则表达式 但无法弄清楚如何执行此操作 就我而言 有一个查询字符串参数可以重复自身 例如 qu
  • ZF2 fileprg 与集合中的文件

    我无法得到fileprg用于处理集合中的文件的插件 我正在尝试使用上传多个文件FormCollections 但在 form gt getData 没有与我的收藏或文件相关的密钥 我用简单的方法测试了表单和 fileprgfile inpu