SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Starting with ExtBase
Grundaufbau ExtBase/Fluid
Model: Product
• Title
• Price
Repository
• findAll
• findByProperty

Controller
• List
• Show
Fluid Template
• List

Fluid Template
• Show
Grundaufbau ExtBase/Fluid
Model

Controller

Fluid Template

public function getTitle() {
return $this->title;
}
public function listAction() {
$products = $this->productRepository->findAll();
$this->view->assign('products', $products);
}

<f:for each="{products}" as="product">
<tr>
<td>
<f:link.action action="show" arguments="{product :
product}">
{product.title}
</f:link.action>
</td>
</tr>
</f:for>
ViewHelper
{namespace as=TYPO3AsViewhelperViewHelpers}

Fluid Template
<f:for each="{products}" as="product">
<tr>
<td>
<f:link.action action="show" arguments="{product : product}">
<as:uppercase value="{product.title}" />
</f:link.action>
</td>
</tr>
</f:for>

ViewHelper

class UppercaseViewHelper
extends TYPO3CMSFluidCoreViewHelperAbstractViewHelper
{
public function render($value) {
return strtoupper($value);
}

}
Extension Builder
Extension Builder
Extension Builder: Relations
•
•
•
•

Hauptobjekt: Product – aggregate root
Untertabellen: Color
Relations: Drag & Drop mit dem Kreis
More->Type: 1:1, 1:n, n:1, n:m
Verzeichnisstruktur
- Classes
--- Controller
--- Domain
--- ViewHelpers
- Configuration
--- FlexForms
--- TCA
--- TypoScript
- Resources
--- Private
----- Templates
--- Public
----CSS
----JS
Konventionen
• phpDoc vor Funktionen
• Camel-Case, Lower-Camel-Case,
Unterstrich,…?
– Class: AsDemoExtbase
– Variable: asDemoExtbase
– Datenbank: as_demo_extbase
Datenbank: Repository
• Sehr viele Default-Funktionen:
• findAll = SELECT * FROM table
• findByName($val) =
SELECT * FROM table where name like „$val
• findOneByArticleNo($id)
SELECT … limit 1
• Add, remove, update, replace,
• $query->createQuery; $query->matching(),
constraints, $query->execute
• SQL: $query->statement(„SELECT ….“)
ObjectManager
• PHP: new
TYPO3: t3lib_div::createInstance
• Extbase: Singleton, DependencyInjection
• objectManager->get (Controller, Repository)
• objectManager->create (Model), danach im
Repistory: $this->add($obj)
$prod=$this->objectManager->create
('TYPO3Asextbasedemo1DomainModelProduct');
$prod->setTitle("AutoCreated");
$this->productRepository->add($prod);

2 Slashes in Namespace Path!
Nice to know
• piBased: $this->pi_getLL('languagekey')
• TYPO3CMSExtbaseUtilityLocalizationUtility::tr
anslate('languagekey', $extensionName)
(extensionName: Ordnername in typo3conf/ext)
Links
• Tutorial: http://www.typo3lexikon.de/typo3tutorials/extensions/fluid.html
• Extbase Buch Kurfürst:
http://docs.typo3.org/typo3cms/ExtbaseFluidBook/
• Mittwald: ExtBase Referenz PDF
https://www.mittwald.de/typo3-dokumentation/
• Tips: http://t3n.de/magazin/zehn-tipps-tricks-extbasefluid-227639/
• Namespaces:
http://www.speedprogs.de/anleitungen/detailansicht/
extension-entwicklung-mit-namespaces.html

Contenu connexe

Tendances

第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource
Kaz Watanabe
 
Mysql Aggregate
Mysql AggregateMysql Aggregate
Mysql Aggregate
lotlot
 

Tendances (20)

Type Systems & Props Design - Exploring PropTypes, TypeScript, Flow & Reason
Type Systems & Props Design - Exploring PropTypes, TypeScript, Flow & ReasonType Systems & Props Design - Exploring PropTypes, TypeScript, Flow & Reason
Type Systems & Props Design - Exploring PropTypes, TypeScript, Flow & Reason
 
7. Lower upper in Laravel
7. Lower upper in Laravel7. Lower upper in Laravel
7. Lower upper in Laravel
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and features
 
Keeping It Simple
Keeping It SimpleKeeping It Simple
Keeping It Simple
 
Web development today
Web development todayWeb development today
Web development today
 
Ch2(working with forms)
Ch2(working with forms)Ch2(working with forms)
Ch2(working with forms)
 
JavaScript徹底整理セミナー "今から始める人も、整理したい人も"
JavaScript徹底整理セミナー "今から始める人も、整理したい人も"JavaScript徹底整理セミナー "今から始める人も、整理したい人も"
JavaScript徹底整理セミナー "今から始める人も、整理したい人も"
 
8.1
8.18.1
8.1
 
第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource
 
Using Actions and Filters in WordPress to Make a Plugin Your Own
Using Actions and Filters in WordPress to Make a Plugin Your OwnUsing Actions and Filters in WordPress to Make a Plugin Your Own
Using Actions and Filters in WordPress to Make a Plugin Your Own
 
COMP2021 Final Project - LightHTML
COMP2021 Final Project - LightHTMLCOMP2021 Final Project - LightHTML
COMP2021 Final Project - LightHTML
 
Jquery ajax & form
Jquery ajax & formJquery ajax & form
Jquery ajax & form
 
Laravel the right way
Laravel   the right wayLaravel   the right way
Laravel the right way
 
Яків Крамаренко “Локатори і з чим їх їдять:)”
Яків Крамаренко “Локатори і з чим їх їдять:)”Яків Крамаренко “Локатори і з чим їх їдять:)”
Яків Крамаренко “Локатори і з чим їх їдять:)”
 
Introduction to RichFaces
Introduction to RichFacesIntroduction to RichFaces
Introduction to RichFaces
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using Codeception
 
Mysql Aggregate
Mysql AggregateMysql Aggregate
Mysql Aggregate
 
정오의 데이트 for iOS 코드 정리
정오의 데이트 for iOS 코드 정리정오의 데이트 for iOS 코드 정리
정오의 데이트 for iOS 코드 정리
 
PHP Array very Easy Demo
PHP Array very Easy DemoPHP Array very Easy Demo
PHP Array very Easy Demo
 
Feeds drupal cafe
Feeds drupal cafeFeeds drupal cafe
Feeds drupal cafe
 

Similaire à Getting started with ExtBase

Frameworks da nova Era PHP FuelPHP
Frameworks da nova Era PHP FuelPHPFrameworks da nova Era PHP FuelPHP
Frameworks da nova Era PHP FuelPHP
Dan Jesus
 

Similaire à Getting started with ExtBase (20)

Frameworks da nova Era PHP FuelPHP
Frameworks da nova Era PHP FuelPHPFrameworks da nova Era PHP FuelPHP
Frameworks da nova Era PHP FuelPHP
 
Creating web api and consuming part 2
Creating web api and consuming part 2Creating web api and consuming part 2
Creating web api and consuming part 2
 
Practica n° 7
Practica n° 7Practica n° 7
Practica n° 7
 
Deploying Straight to Production
Deploying Straight to ProductionDeploying Straight to Production
Deploying Straight to Production
 
Modularity and Layered Data Model
Modularity and Layered Data ModelModularity and Layered Data Model
Modularity and Layered Data Model
 
Oop php 5
Oop php 5Oop php 5
Oop php 5
 
Prateek dayal backbonerails-110528024926-phpapp02
Prateek dayal backbonerails-110528024926-phpapp02Prateek dayal backbonerails-110528024926-phpapp02
Prateek dayal backbonerails-110528024926-phpapp02
 
Single Page Web Apps with Backbone.js and Rails
Single Page Web Apps with Backbone.js and RailsSingle Page Web Apps with Backbone.js and Rails
Single Page Web Apps with Backbone.js and Rails
 
How to Bring Common UI Patterns to ADF
How to Bring Common UI Patterns to ADF How to Bring Common UI Patterns to ADF
How to Bring Common UI Patterns to ADF
 
Synapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephpSynapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephp
 
Backbone - TDC 2011 Floripa
Backbone - TDC 2011 FloripaBackbone - TDC 2011 Floripa
Backbone - TDC 2011 Floripa
 
Django crush course
Django crush course Django crush course
Django crush course
 
Implement rich snippets in your webshop
Implement rich snippets in your webshopImplement rich snippets in your webshop
Implement rich snippets in your webshop
 
Session six ASP.net (MVC) View
Session six ASP.net (MVC) ViewSession six ASP.net (MVC) View
Session six ASP.net (MVC) View
 
Building Modern Websites with ASP.NET by Rachel Appel
Building Modern Websites with ASP.NET by Rachel AppelBuilding Modern Websites with ASP.NET by Rachel Appel
Building Modern Websites with ASP.NET by Rachel Appel
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
Bioinformatica 10-11-2011-p6-bioperl
Bioinformatica 10-11-2011-p6-bioperlBioinformatica 10-11-2011-p6-bioperl
Bioinformatica 10-11-2011-p6-bioperl
 
cake phptutorial
cake phptutorialcake phptutorial
cake phptutorial
 
How te bring common UI patterns to ADF
How te bring common UI patterns to ADFHow te bring common UI patterns to ADF
How te bring common UI patterns to ADF
 
F# in the enterprise
F# in the enterpriseF# in the enterprise
F# in the enterprise
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Dernier (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

Getting started with ExtBase

  • 2. Grundaufbau ExtBase/Fluid Model: Product • Title • Price Repository • findAll • findByProperty Controller • List • Show Fluid Template • List Fluid Template • Show
  • 3. Grundaufbau ExtBase/Fluid Model Controller Fluid Template public function getTitle() { return $this->title; } public function listAction() { $products = $this->productRepository->findAll(); $this->view->assign('products', $products); } <f:for each="{products}" as="product"> <tr> <td> <f:link.action action="show" arguments="{product : product}"> {product.title} </f:link.action> </td> </tr> </f:for>
  • 4. ViewHelper {namespace as=TYPO3AsViewhelperViewHelpers} Fluid Template <f:for each="{products}" as="product"> <tr> <td> <f:link.action action="show" arguments="{product : product}"> <as:uppercase value="{product.title}" /> </f:link.action> </td> </tr> </f:for> ViewHelper class UppercaseViewHelper extends TYPO3CMSFluidCoreViewHelperAbstractViewHelper { public function render($value) { return strtoupper($value); } }
  • 7. Extension Builder: Relations • • • • Hauptobjekt: Product – aggregate root Untertabellen: Color Relations: Drag & Drop mit dem Kreis More->Type: 1:1, 1:n, n:1, n:m
  • 8. Verzeichnisstruktur - Classes --- Controller --- Domain --- ViewHelpers - Configuration --- FlexForms --- TCA --- TypoScript - Resources --- Private ----- Templates --- Public ----CSS ----JS
  • 9. Konventionen • phpDoc vor Funktionen • Camel-Case, Lower-Camel-Case, Unterstrich,…? – Class: AsDemoExtbase – Variable: asDemoExtbase – Datenbank: as_demo_extbase
  • 10. Datenbank: Repository • Sehr viele Default-Funktionen: • findAll = SELECT * FROM table • findByName($val) = SELECT * FROM table where name like „$val • findOneByArticleNo($id) SELECT … limit 1 • Add, remove, update, replace, • $query->createQuery; $query->matching(), constraints, $query->execute • SQL: $query->statement(„SELECT ….“)
  • 11. ObjectManager • PHP: new TYPO3: t3lib_div::createInstance • Extbase: Singleton, DependencyInjection • objectManager->get (Controller, Repository) • objectManager->create (Model), danach im Repistory: $this->add($obj) $prod=$this->objectManager->create ('TYPO3Asextbasedemo1DomainModelProduct'); $prod->setTitle("AutoCreated"); $this->productRepository->add($prod); 2 Slashes in Namespace Path!
  • 12. Nice to know • piBased: $this->pi_getLL('languagekey') • TYPO3CMSExtbaseUtilityLocalizationUtility::tr anslate('languagekey', $extensionName) (extensionName: Ordnername in typo3conf/ext)
  • 13. Links • Tutorial: http://www.typo3lexikon.de/typo3tutorials/extensions/fluid.html • Extbase Buch Kurfürst: http://docs.typo3.org/typo3cms/ExtbaseFluidBook/ • Mittwald: ExtBase Referenz PDF https://www.mittwald.de/typo3-dokumentation/ • Tips: http://t3n.de/magazin/zehn-tipps-tricks-extbasefluid-227639/ • Namespaces: http://www.speedprogs.de/anleitungen/detailansicht/ extension-entwicklung-mit-namespaces.html