[TYPO3-ect] TS Action chains for SPL objects

Elmar Hinz elmar07 at googlemail.com
Tue Aug 7 21:13:20 CEST 2007


> Hi Steffen,
> 
> well there are several resons. A write them down as a simple list.
> 
> * Technically it would be an controller extending tx_lib_controller.
> * Similar concept to successfull JAVA struts, but goes some steps further.
> * The vision helps to keep the API of SPL objects simple and stringent.


I now have an example, how it helped me to simplify in the SPL objects API:

Old bananas list action:

  public function defaultAction() {
        // finding classnames
        $modelClassName =
tx_div::makeInstanceClassName('tx_bananas_models_board');
        $listClassName =
tx_div::makeInstanceClassName('tx_bananas_views_list');
        $entryClassName =
tx_div::makeInstanceClassName('tx_bananas_views_entry');
        $translatorClassName =
tx_div::makeInstanceClassName('tx_lib_translator');

        // a simple processing chain
        $model = new $modelClassName($this);
        $model->load();
        $view = $model->toObjectOfObjects($listClassName, $entryClassName);
        $view->render($this->configurations->get('listTemplate'));
        $translator = new $translatorClassName($this, $view);
        return $translator->translateContent();
    }

New bananas list action:

 public function defaultAction() {
                $model = $this->makeInstance('tx_bananas_models_board');
                $model->load();
                $view = $this->makeInstance('tx_bananas_views_list', $model);
                $view->castElements('tx_bananas_views_entry');
                $view->render('listTemplate');
                $translator = $this->makeInstance('tx_lib_translator', $view);
                return $translator->translateContent();
 }

You see it now could probably directly be translated to TS:

defaultAction {
  START = model
  model = tx_bananas_models_board
  model.do.1 = load
  model.go.next = view
  view = tx_bananas_views_list
  view.do.1 = render
  view.do.1.1 = listTemplate
  view.go.next = translator
  translator = tx_lib_translator
  translator.1 = translateContent
  translator.return = content
}

Well, there is stell an issue with the return syntax.

Regards

Elmar





More information about the TYPO3-team-extension-coordination mailing list