【问题标题】:Extract data from form objects as array of values从表单对象中提取数据作为值数组
【发布时间】:2014-08-29 20:50:22
【问题描述】:

我正在使用 Symfony 2.5 构建一个 Web 应用程序。我目前正在努力处理内部转发带有 POST/PUT 表单数据的请求。关于这一点,Cerad 已经解决了之前的一个问题。有关完整的故事,请参阅:

Subrequests with post vars

但是现在我有了转发解决方案,我似乎无法找到一种方法来提取表单数据作为可以附加到子请求的值数组。我尝试使用Form::getData(),但它返回了一个实体,我也尝试使用Form::all(),但我得到了一个表单对象数组。我可以遍历所有这些以获取表单中的有效值,但我觉得应该有更好的解决方案。

有什么想法吗?

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

    如果您执行 HTTP 重定向,您需要在重定向之前将所有表单数据保存到 Session,然后从 Session 中读取。

    UPD:我在文档中找到了可能对您有所帮助的章节 Using a Form without a Class

    这其实很简单:

    他们说。 如果它没有帮助,您可以尝试其中一种转换方法。

    简单的“转换”(父对象内的对象将保持为对象):

    $array = (array) $object;
    

    或使用get_object_vars()

    $array = get_object_vars($object);
    

    或使用ArrayObject:

    $arrayObject = new ArrayObject($object);
    $array = $arrayObject->getArrayCopy();
    

    最后是 JSON 编码/解码

    $array = json_decode(json_encode($object), true);
    

    【讨论】:

    • 问题是,正如问题中所说,我没有重定向我正在转发(内部),所以没有来自浏览器的新请求。
    • 嗨,我认为 json 编码/解码可能是解决方案,但我的架构不同,不必在控制器之间转发请求。不过我还是试试看
    猜你喜欢
    • 2023-01-27
    • 2021-05-01
    • 2015-08-22
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多