【问题标题】:own extbase extension with error "&cHash empty" in form method = post自己的 extbase 扩展在表单方法中出现错误“&cHash empty” = post
【发布时间】:2017-12-15 10:13:00
【问题描述】:

我在这里找到了一些信息https://forge.typo3.org/issues/6166,但没有解决方案。如何在没有全局设置的情况下解决这个问题$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFoundOnCHashError'] = 'false';

我的问题:我有新的 extbase 扩展,在 TYPO3 8.7.7 上使用 extension_builder 构建。我没有使用 RealUrl。一切正常,但在我的带有简单动作“列表”的插件中,存在带有一些需求文件(method="post")的简单流体形式。当我尝试提交表单时,我得到 "Page Not Found 原因:无法验证请求参数(&cHash 为空)".

当我使用$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFoundOnCHashError'] = 'false'; 时,一切正常。在我的表单 url 中,我没有 cHash。并且不知道生成并添加它以提交我的表单并获取带有需求结果的列表而没有此错误。一些信息,一些想法,有什么帮助吗?

流体形式

            <f:form name="demand" object="{demand}" action="list"  class="filter-form pagination-target">
                <div class="row">
                    <div class="col-md-3 col-lg-2">
                        <div class="form-group">
                            <label for="fulltext"><f:translate key="filter.search" default="Search:"/></label>
                            <f:form.textfield property="fulltext" class="form-control"/>
                        </div>
                    </div>    

                    <div class="col-xs-2">
                        <div class="form-group">
                            <label>&nbsp;</label> <br>
                            <f:form.hidden property="pagination.perPage" class="per-page-holder"/>
                            <f:form.hidden property="pagination.page" class="page-holder" value="0"/>
                            <f:form.submit value="{f:translate(key: 'filter.submit', default: 'Filter')}" class="btn btn-warning"/>
                        </div>
                    </div>
                </div>

            </f:form>

-- 更新 ---

谢谢,TYPO3 Developer addQueryString="1" 的建议,但我没有得到参数。我想我根本不需要 chach,没有它应该可以工作。 Mb 我需要在一些 cHash 中添加一些忽略或类似的东西吗?

-- 更新 ---

在我使用 method=POST 提交表单后,我没有 GET 参数,因此不需要 cHash,但我的 TYPO3 仍然失败,并出现以下错误“... &cHash empty ...”并从此链接判断https://forge.typo3.org/issues/6166有这种问题的不止我一个人。

【问题讨论】:

  • 您能否提供一个示例来说明您是如何定义表单的?如果您使用&lt;f:form&gt;,则应自动添加 cHash(至少在您未将 noCacheHash 设置为 true 的情况下)。
  • 已添加。我还查看了 f:form 文档,只找到 noCacheHash - 但这没有效果(默认情况下应该是 false - bu 事件我手动添加了这个 - 一些故事)。我也尝试了这两种方法 - 也没有效果
  • 你能试试 noCacheHash="0" 吗?我想“FALSE”不是布尔值,因此在这种情况下是真的。不过,省略该参数应默认为 false 并适用于您的情况。我一直使用这样的流体形式。一个 CHash 应该由 ViewHelper 生成。

标签: typo3 extbase typo3-8.x


【解决方案1】:

尝试在您的f:form 中添加addQueryString = '1',如下所示。

<f:form name="demand" object="{demand}" action="list"   method="get" addQueryString="1" class="filter-form pagination-target">
 ........
 ........
</f:form>

【讨论】:

  • 是的,在这种情况下,我会在 url 中得到页面的 chash,但它看起来更像是“拐杖”或者这是一个标准解决方案?
  • 是的,这是typo3标准方式。
  • 但在我的情况下我没有任何 get 参数有点奇怪 - 通常我根本不需要现金?
  • 你的意思是,你没有得到任何参数值?
  • 对不起,我的意思是我没有 GET 参数,所以 cHash 不应该是必需的
【解决方案2】:

我的扩展程序和搜索 EXT:news 时也遇到了这个问题(请参阅 https://github.com/georgringer/news/issues/413)。也许它与 POST 参数有关,也许它是 Extbase/Fluid 的一个错误。 就我而言,它通过应用 GET 参数来帮助生成 cHash,我在“f:form”中添加了参数“action”和“controller”。添加任意参数也有帮助:arguments="{dummy: 1}"

【讨论】:

  • 谢谢我会试试这个,如果能找到更多东西也会通知你
猜你喜欢
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2017-06-01
相关资源
最近更新 更多