[TYPO3-mvc] Extend CropViewhelper

Tim Schoch | GSTALTIG tim.schoch at gstaltig.ch
Mon Oct 10 15:31:57 CEST 2011


Hello Thomas

This works fine for me:
<?php
  class ExtendedCrop extends CropViewHelper {
        protected function renderChildren() {
            return 'Child + ' . parent::renderChildren();
        }
  }
  
  class CropViewHelper { // imagine this to be the original fluid viewhelper
      public function render() {
            return $this->renderChildren();
      }
        protected function renderChildren() {
            return 'Parent';
        }
    }
    
    $crop = new ExtendedCrop();
    echo $crop->render(); // returns Child + Parent
?>

The call in the parent $this->renderChildren() will call you're extended function and not the one defined by itself.
If you want to preprocess the content before it gets cropped, you can do use the parent::renderChildren() method in your extended version.
I guess thats what Sebastian meant.

Tim

  _____  

From: Thomas Allmer [mailto:at at delusionworld.com]
To: typo3-project-typo3v4mvc at lists.typo3.org
Sent: Mon, 10 Oct 2011 13:50:37 +0200
Subject: Re: [TYPO3-mvc] Extend CropViewhelper

On 10.10.2011 09:17, Sebastian Schreiber wrote:
  > Maybe this helps and make you feel better:
  >
  > Introduce a member variable in your class overrite the renderChildren
  > method in your class and return your
  > variable.
  >
  > Right?
  
  probably not :p
  
  changing the renderChildren method won't change how the parent will 
  fetch it's string... so it won't help :p unless I extend the Crop with a 
  "CropFix" overwriting the renderChildren there and then extend from the 
  "CropFix" instead of the normal Crop... but than again this looks even 
  more ugly :p and if I would crop I would certainly only change the 
  render method so I could pass the string to use and not temper with the 
  renderChildren :p
  
  more ideas? :p
  
  > Am 10.10.2011 01:00, schrieb Thomas Allmer:
  >> hey,
  >>
  >> can I set somehow the content of the current viewhelper?
  >> I do want to extend the CropViewHelper like this:
  >>
  >> class Tx_Reposearch_ViewHelpers_Format_HighlightCropViewHelper extends
  >> Tx_Fluid_ViewHelpers_Format_CropViewHelper
  >>
  >> so I get the string and do some modifications to it afterward I want
  >> to call the parent, but as Crop gets the content with
  >> $this->renderChildren(); I can't give my "new" string as a parameter?
  >>
  >> I though of probably something like this but that obviously don't work
  >> as there is no setContent function :p
  >> $this->setContent($stringToHighlightTruncate);
  >> return parent::render($maxCharacters, $append, [...]);
  >>
  >> so currently I more or less just fork the Crop viewhelper... but that
  >> doesn't seem right... so anyone got a better solution?
  >>
  >> see gist for full code https://gist.github.com/1274313
  >>
  >> I was just thinking, but in most cases I don't even need this as most
  >> viewhelpers do it like this and let you define the subject via
  >> parameter...
  >> if ($subject === NULL) {
  >> $subject = $this->renderChildren();
  >> }
  >>
  >> so probably a bug report for a view?
  >>
  >> cheers
  >
  >
  
  
  -- 
  +---------------------------------+-----------------------------------+
  | Thomas Allmer                   |   http://www.delusionworld.com    |
  | E-mail: at at delusionworld.com    |   phone: +43 699 16217064         |
  +---------------------------------+-----------------------------------+
  _______________________________________________
  TYPO3-project-typo3v4mvc mailing list
  TYPO3-project-typo3v4mvc at lists.typo3.org
  http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
    


More information about the TYPO3-project-typo3v4mvc mailing list