[TASK] Move arguments to initializeArguments() in ImageVH in ext:fluid 80/48880/4
authorRoberto Torresani <erreti@gmail.com>
Sun, 10 Jul 2016 19:32:51 +0000 (21:32 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Tue, 19 Jul 2016 17:33:44 +0000 (19:33 +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: #77016
Releases: master
Change-Id: I610265261181cd865d7daa1b6e5989bc193480cb
Reviewed-on: https://review.typo3.org/48880
Tested-by: Bamboo TYPO3com <info@typo3.com>
Reviewed-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/Uri/ImageViewHelper.php

index f4f2f17..7831dd6 100644 (file)
@@ -64,39 +64,35 @@ use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 class ImageViewHelper extends AbstractViewHelper
 {
     /**
+     * Initialize arguments
+     */
+    public function initializeArguments()
+    {
+        parent::initializeArguments();
+        $this->registerArgument('src', 'string', 'src');
+        $this->registerArgument('image', 'object', 'image');
+        $this->registerArgument('width', 'string', 'width of the image. This can be a numeric value representing the fixed width of the image in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.');
+        $this->registerArgument('height', 'string', 'height of the image. This can be a numeric value representing the fixed height of the image in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.');
+        $this->registerArgument('minWidth', 'int', 'minimum width of the image');
+        $this->registerArgument('minHeight', 'int', 'minimum height of the image');
+        $this->registerArgument('maxWidth', 'int', 'maximum width of the image');
+        $this->registerArgument('maxHeight', 'int', 'maximum height of the image');
+        $this->registerArgument('treatIdAsReference', 'bool', 'given src argument is a sys_file_reference record', false, false);
+        $this->registerArgument('crop', 'string|bool', 'overrule cropping of image (setting to FALSE disables the cropping set in FileReference)');
+        $this->registerArgument('absolute', 'bool', 'Force absolute URL', false, false);
+    }
+
+    /**
      * Resizes the image (if required) and returns its path. If the image was not resized, the path will be equal to $src
      *
      * @see https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/ImgResource/
-     * @param string $src
-     * @param object $image
-     * @param string $width width of the image. This can be a numeric value representing the fixed width of the image in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.
-     * @param string $height height of the image. This can be a numeric value representing the fixed height of the image in pixels. But you can also perform simple calculations by adding "m" or "c" to the value. See imgResource.width for possible options.
-     * @param int $minWidth minimum width of the image
-     * @param int $minHeight minimum height of the image
-     * @param int $maxWidth maximum width of the image
-     * @param int $maxHeight maximum height of the image
-     * @param bool $treatIdAsReference given src argument is a sys_file_reference record
-     * @param string|bool $crop overrule cropping of image (setting to FALSE disables the cropping set in FileReference)
-     * @param bool $absolute Force absolute URL
      * @throws Exception
      * @return string path to the image
      */
-    public function render($src = null, $image = null, $width = null, $height = null, $minWidth = null, $minHeight = null, $maxWidth = null, $maxHeight = null, $treatIdAsReference = false, $crop = null, $absolute = false)
+    public function render()
     {
         return self::renderStatic(
-            array(
-                'src' => $src,
-                'image' => $image,
-                'width' => $width,
-                'height' => $height,
-                'minWidth' => $minWidth,
-                'minHeight' => $minHeight,
-                'maxWidth' => $maxWidth,
-                'maxHeight' => $maxHeight,
-                'treatIdAsReference' => $treatIdAsReference,
-                'crop' => $crop,
-                'absolute' => $absolute,
-            ),
+            $this->arguments,
             $this->buildRenderChildrenClosure(),
             $this->renderingContext
         );