【问题标题】:Parameters to action lost when validation error occurs发生验证错误时操作参数丢失
【发布时间】:2015-10-04 18:15:08
【问题描述】:

我有两个动作,newActioncreateAction。两者都获得相同的参数,它们是普通值,而不是对象。

它们的实现类似于:

/**
 * Renders a form with the createAction as action="".
 *
 * @param string $value1
 * @param boolean $value2
 *
 * @ignorevalidation $value1
 * @ignorevalidation $value2
 */
public function newAction($value1 = NULL, $value2 = NULL) {
    $this->view->assignMultiple([
        'value1' => $value1,
        'value2' => $value2,
    ]);
}

/**
 * @param string $value1
 * @param boolean $value2
 *
 * @validate $value1 NotEmpty
 * @validate $value1 EmailAddress
 * @validate $value1 \Vendor\Extkey\Validator\MyValidator
 *
 * @validate $value2 Boolean(is=TRUE)
 */
public function createAction($value1, $value2) {
    // Do some stuff
}

如果newAction不带参数执行,一切正常,表单显示不预填字段。

如果表单使用有效值提交,createAction 将使用正确的值调用,并且一切都按预期工作。

如果表单使用无效值提交,验证将按预期失败。然后请求再次转发到 newAction,这是应该的 - 但是 newAction 的参数都是NULL,而不是之前输入到表单中的无效值。

我已确定参数确实已提交 (var_dump($_POST)),并且 TYPO3 已收到它们(通过将它们打印在 errorAction 中)。

为什么会这样,是我做错了吗?还是那个地方的extbase坏了?

TYPO3-版本:6.2.15

【问题讨论】:

    标签: typo3 extbase typo3-6.2.x


    【解决方案1】:

    好的,我刚刚找到了原因:这是故意这样做的,以避免传递未通过验证的值。 Here is the forge ticket.

    为了获取无效参数,可以使用$this->request->getOriginalRequest()访问原始请求。在上面的示例中执行此操作可能如下所示:

    /**
     * Renders a form with the createAction as action="".
     * No more parameters here!
     */
    public function newAction() {
        $originalRequest = $this->request->getOriginalRequest();
        if (NULL !== $originalRequest) {
            $this->view->assignMultiple($originalRequest->getArguments());
        }
    }
    
    /**
     * @param string $value1
     * @param boolean $value2
     *
     * @validate $value1 NotEmpty
     * @validate $value1 EmailAddress
     * @validate $value1 \Vendor\Extkey\Validator\MyValidator
     *
     * @validate $value2 Boolean(is=TRUE)
     */
    public function createAction($value1, $value2) {
        // Do some stuff
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      相关资源
      最近更新 更多