From 25608d6bd4d2aa71c84070b8a81f325c0be2d785 Mon Sep 17 00:00:00 2001 From: Thomas Maroschik <tmaroschik@dfau.de> Date: Tue, 15 Oct 2013 11:28:41 +0200 Subject: [PATCH] [BUGFIX] Preserve vendor name in refering request Fluid FormViewHelper adds some hidden fields that contain information about the current controller. When the form is submitted and contains a validation error the errorAction int the ActionController is hit. This one builds a refering request object from the hidden fields without a vendor name, as this one is not passed from the FormViewHelper. The request object tries to guess the controller name but guesses a non namespaced classes name as the vendor name is not given. To get further information about the class methods the class name gets autoloaded and creates a wrong classes cache entry as the autoloader cannot detect if a extension has namespaced or non namespaced classes from the outside. This patch introduces a hidden vendor name field in the Fluid FormViewHelper. Fixes: #52823 Releases: 6.2, 6.1, 6.0 Change-Id: I0a82cf2ee07ce293eda0b9f50d3cac7b2a513f15 Reviewed-on: https://review.typo3.org/24787 Reviewed-by: Stefan Neufeind Tested-by: Stefan Neufeind --- typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php index 1e8ce2ff8dfa..47fe1816ca78 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php @@ -251,11 +251,13 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH protected function renderHiddenReferrerFields() { $request = $this->controllerContext->getRequest(); $extensionName = $request->getControllerExtensionName(); + $vendorName = $request->getControllerVendorName(); $controllerName = $request->getControllerName(); $actionName = $request->getControllerActionName(); $result = chr(10); if ($this->configurationManager->isFeatureEnabled('rewrittenPropertyMapper')) { $result .= '<input type="hidden" name="' . $this->prefixFieldName('__referrer[@extension]') . '" value="' . $extensionName . '" />' . chr(10); + if ($vendorName !== NULL) $result .= '<input type="hidden" name="' . $this->prefixFieldName('__referrer[@vendor]') . '" value="' . $vendorName . '" />' . chr(10); $result .= '<input type="hidden" name="' . $this->prefixFieldName('__referrer[@controller]') . '" value="' . $controllerName . '" />' . chr(10); $result .= '<input type="hidden" name="' . $this->prefixFieldName('__referrer[@action]') . '" value="' . $actionName . '" />' . chr(10); $result .= '<input type="hidden" name="' . $this->prefixFieldName('__referrer[arguments]') . '" value="' . htmlspecialchars($this->hashService->appendHmac(base64_encode(serialize($request->getArguments())))) . '" />' . chr(10); -- GitLab