Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

Extbase

From TYPO3Wiki
Jump to: navigation, search
This page belongs to the Core Team (category Core Team)
Outdated This information is outdated. The newest information can be found at the Forge wiki.


Contents

EXT:extbase - pibase 2.0

pibase is getting old now and we'd like to code plugins and modules in a more sophisticated - object oriented way. This is where extbase joins the game (the core game in this case). Extbase is going to be a system extension and provide classes to easily work with core functions when developing extensions and modules. Such classes will cover working with Templates, FE users, Links, Caching, Flexforms, ...

This page is a place to collect ideas about the classes we need and how they should look like.

Concepts

  • allow use of Patterns like MVC / ORM (tcaobject)
  • transparent API (Facades) for diffrent TYPO3 specific stuff (workspace / feediting / translations)


Classes

The following is a first list of classes we think are useful for extension development

Option

(Isn't a better name Configuration?) Handling of

  • Default settings
  • Options set through TS
  • Options set through Flexforms
  • Unified interface

Form

  • low level generation of formelements (selectboxes etc)

MVC

Idea is to fit two goals

  1. Set of small PHP5 based basis abstract classes that can be used as a start for own individual MVC based extensions.
  2. Some predefined models/view and low level classes that can be used for common requirements (like having a list view)

So the 3 Basis classes can be:

  • ControllerAbstract (just gets a Configuration Object. a main method decides which action to call)
  • ModelBaseAbstract (dont really need much (just a setConfiguration ...))
  • ViewBaseAbstract (two methods: setModel / render )

Views that fills the render method with live:

  • MarkerViewBase
  • SmartyViewBase
How an action can look like:
PHP script:
// 1) do some buissness logic with your extension
// ...
//2) Output preparation with MVC
$model=t3lib_div::makeInstance('mySpecialModel');
//initialise model data
$model->load(...)
// ...
$view=t3lib_div::makeInstance('mySpecialView');
$view->setModel($model);
$view->setTemplate($this->getConfiguration()['template']);
return $view->render();

Pro: I am free with designing my own models and view -> I just have a basis to use.

Model and View for Lists

(to be inspired by FLOW3 MVC Framework)

GUI

  • ListModel (simple ArrayObject to append listentries)
  • ListView (simple view that renders a ListModel (with pagination etc)

useful Models

  • TableListAbstract (functions to load a data from a table, support for overlays, workspaces etc)
  • TableListToListConnector

FeUser

handling of all things related to FE users

FeUserGroup

handling of all things related to FE user groups

Cache

  • easy cache handling

Template

  • easy templating
  • ###LLL:some.label.key### should be replaced with a label automatically
  • ###RECORD:my_variable_coming_from_db_and_processed_through_a_plugin### or ###VAR:some_variable###
  • Loops: ###LOOP:SOME_SUBPART### Start, ###LOOP:SOME_SUBPART### End (in HTML comments like subparts)

Feed

  • easy creation of feeds with different formats
  • should use the abstract factory pattern

Link

Can be taken from lib extension: Is a very good abstraction for typolink.

Registry

A Registry class (using Registry and Singleton Pattern) to transfer Objects between the different layers of MVC or even different plugin instances.

Table

Easyly create a HTML table (optionally with paging and sorting). Instanciate a HtmlTable object, add some headers, add data rows, call the render method, be done with it.

Personal tools
Namespaces
Variants
Actions