[TASK] Move arguments to initializeArguments() in FormVH in ext:fluid 17/49017/5
authorRoberto Torresani <erreti@gmail.com>
Sun, 17 Jul 2016 20:42:26 +0000 (22:42 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Tue, 19 Jul 2016 19:03:16 +0000 (21:03 +0200)
Move the argument registrations away from the render() method
to initializeArguments(), to prevent any errors with PHP7 and
subclassed ViewHelpers if/when render() method signatures change.

Resolves: #77065
Releases: master
Change-Id: Ib6e7378cf0d6e393721ee02132ff570e265674b9
Reviewed-on: https://review.typo3.org/49017
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Bamboo TYPO3com <info@typo3.com>
Reviewed-by: Jan Haffner <info@jan-haffner.de>
Tested-by: Jan Haffner <info@jan-haffner.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php

index ea757f5..7f4f9f4 100644 (file)
@@ -102,12 +102,30 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Initialize arguments.
-     *
-     * @return void
      */
     public function initializeArguments()
     {
         parent::initializeArguments();
+        $this->registerArgument('action', 'string', 'Target action');
+        $this->registerArgument('arguments', 'array', 'Arguments', false, array());
+        $this->registerArgument('controller', 'string', 'Target controller');
+        $this->registerArgument('extensionName', 'string', 'Target Extension Name (without "tx_" prefix and no underscores). If NULL the current extension name is used');
+        $this->registerArgument('pluginName', 'string', 'Target plugin. If empty, the current plugin name is used');
+        $this->registerArgument('pageUid', 'int', 'Target page uid');
+        $this->registerArgument('object', 'mixed', 'Object to use for the form. Use in conjunction with the "property" attribute on the sub tags');
+        $this->registerArgument('pageType', 'int', 'Target page type', false, 0);
+        $this->registerArgument('noCache', 'bool', 'set this to disable caching for the target page. You should not need this.', false, false);
+        $this->registerArgument('noCacheHash', 'bool', 'set this to suppress the cHash query parameter created by TypoLink. You should not need this.', false, false);
+        $this->registerArgument('section', 'string', 'The anchor to be added to the action URI (only active if $actionUri is not set)', false, '');
+        $this->registerArgument('format', 'string', 'The requested format (e.g. ".html") of the target page (only active if $actionUri is not set)', false, '');
+        $this->registerArgument('additionalParams', 'array', 'additional action URI query parameters that won\'t be prefixed like $arguments (overrule $arguments) (only active if $actionUri is not set)', false, array());
+        $this->registerArgument('absolute', 'bool', 'If set, an absolute action URI is rendered (only active if $actionUri is not set)', false, false);
+        $this->registerArgument('addQueryString', 'bool', 'If set, the current query parameters will be kept in the action URI (only active if $actionUri is not set)', false, false);
+        $this->registerArgument('argumentsToBeExcludedFromQueryString', 'array', 'arguments to be removed from the action URI. Only active if $addQueryString = TRUE and $actionUri is not set', false, array());
+        $this->registerArgument('fieldNamePrefix', 'string', 'Prefix that will be added to all field names within this form. If not set the prefix will be tx_yourExtension_plugin');
+        $this->registerArgument('actionUri', 'string', 'can be used to overwrite the "action" attribute of the form tag');
+        $this->registerArgument('objectName', 'string', 'name of the object that is bound to this form. If this argument is not specified, the name attribute of this form is used to determine the FormObjectName');
+        $this->registerArgument('hiddenFieldClassName', 'string', 'hiddenFieldClassName');
         $this->registerTagAttribute('enctype', 'string', 'MIME type with which the form is submitted');
         $this->registerTagAttribute('method', 'string', 'Transfer type (GET or POST)');
         $this->registerTagAttribute('name', 'string', 'Name of form');
@@ -119,29 +137,9 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
     /**
      * Render the form.
      *
-     * @param string $action Target action
-     * @param array $arguments Arguments
-     * @param string $controller Target controller
-     * @param string $extensionName Target Extension Name (without "tx_" prefix and no underscores). If NULL the current extension name is used
-     * @param string $pluginName Target plugin. If empty, the current plugin name is used
-     * @param int $pageUid Target page uid
-     * @param mixed $object Object to use for the form. Use in conjunction with the "property" attribute on the sub tags
-     * @param int $pageType Target page type
-     * @param bool $noCache set this to disable caching for the target page. You should not need this.
-     * @param bool $noCacheHash set this to suppress the cHash query parameter created by TypoLink. You should not need this.
-     * @param string $section The anchor to be added to the action URI (only active if $actionUri is not set)
-     * @param string $format The requested format (e.g. ".html") of the target page (only active if $actionUri is not set)
-     * @param array $additionalParams additional action URI query parameters that won't be prefixed like $arguments (overrule $arguments) (only active if $actionUri is not set)
-     * @param bool $absolute If set, an absolute action URI is rendered (only active if $actionUri is not set)
-     * @param bool $addQueryString If set, the current query parameters will be kept in the action URI (only active if $actionUri is not set)
-     * @param array $argumentsToBeExcludedFromQueryString arguments to be removed from the action URI. Only active if $addQueryString = TRUE and $actionUri is not set
-     * @param string $fieldNamePrefix Prefix that will be added to all field names within this form. If not set the prefix will be tx_yourExtension_plugin
-     * @param string $actionUri can be used to overwrite the "action" attribute of the form tag
-     * @param string $objectName name of the object that is bound to this form. If this argument is not specified, the name attribute of this form is used to determine the FormObjectName
-     * @param string $hiddenFieldClassName
      * @return string rendered form
      */
-    public function render($action = null, array $arguments = array(), $controller = null, $extensionName = null, $pluginName = null, $pageUid = null, $object = null, $pageType = 0, $noCache = false, $noCacheHash = false, $section = '', $format = '', array $additionalParams = array(), $absolute = false, $addQueryString = false, array $argumentsToBeExcludedFromQueryString = array(), $fieldNamePrefix = null, $actionUri = null, $objectName = null, $hiddenFieldClassName = null)
+    public function render()
     {
         $this->setFormActionUri();
         if (strtolower($this->arguments['method']) === 'get') {
@@ -182,8 +180,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Sets the "action" attribute of the form tag
-     *
-     * @return void
      */
     protected function setFormActionUri()
     {
@@ -275,8 +271,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Adds the form object name to the ViewHelperVariableContainer if "objectName" argument or "name" attribute is specified.
-     *
-     * @return void
      */
     protected function addFormObjectNameToViewHelperVariableContainer()
     {
@@ -288,8 +282,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Removes the form name from the ViewHelperVariableContainer.
-     *
-     * @return void
      */
     protected function removeFormObjectNameFromViewHelperVariableContainer()
     {
@@ -319,8 +311,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Adds the object that is bound to this form to the ViewHelperVariableContainer if the formObject attribute is specified.
-     *
-     * @return void
      */
     protected function addFormObjectToViewHelperVariableContainer()
     {
@@ -332,8 +322,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Removes the form object from the ViewHelperVariableContainer.
-     *
-     * @return void
      */
     protected function removeFormObjectFromViewHelperVariableContainer()
     {
@@ -345,8 +333,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Adds the field name prefix to the ViewHelperVariableContainer
-     *
-     * @return void
      */
     protected function addFieldNamePrefixToViewHelperVariableContainer()
     {
@@ -370,8 +356,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Removes field name prefix from the ViewHelperVariableContainer
-     *
-     * @return void
      */
     protected function removeFieldNamePrefixFromViewHelperVariableContainer()
     {
@@ -380,8 +364,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Adds a container for form field names to the ViewHelperVariableContainer
-     *
-     * @return void
      */
     protected function addFormFieldNamesToViewHelperVariableContainer()
     {
@@ -390,8 +372,6 @@ class FormViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormViewH
 
     /**
      * Removes the container for form field names from the ViewHelperVariableContainer
-     *
-     * @return void
      */
     protected function removeFormFieldNamesFromViewHelperVariableContainer()
     {