Doku
News Beispiel
routeEnhancers:
NewsPlugin:
type: Extbase
limitToPages:
- 12
extension: News
plugin: Pi1
routes:
-
routePath: '/detail/{news_title}'
_controller: 'News::detail'
_arguments:
news_title: news
-
routePath: '/archiv/{year}/{month}'
_controller: 'News::archive'
defaultController: 'News::list'
defaults:
page: '0'
aspects:
news_title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
Intro
Der routeEnhancer ist in einzelne "routes" aufgeteilt welche jeweils eine controller -> action behandeln
_controller: 'News::detail'Hier controller News und action detail.
Die angegebenen Actions und Controllers werden automatisch aus der url entfernt. Nun muss nur noch beschrieben werden wie mit den übrigen Parametern verfahren wird. Dabei gibt es zwei grundsätzliche Wege.
1) Direkte Ausgabe
routePath: '/archiv/{year}/{month}'
_controller: 'News::archive'Im Beispiel des Archives werden die parameter für {month} (tx_news_pi1[month]=...) und {year} einfach direkt in den Pfad geschrieben.
2) Aspects
-
routePath: '/detail/{news_title}'
_controller: 'News::detail'
_arguments:
news_title: news
aspects:
news_title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segmentEin Aspect kann mann sich wie einen alternativen wert vorstellen im news Detail Beispiel wird dabei ein Datenbank Feld ausgelesen. Um dies zu nutzen deklariert mann zuerst ein Argument:
_arguments:
news_title: newsWobei links die variable steht und rechts der Parameter hier news (tx_news_pi1[news]=...). Im Bereich aspects wird jetzt Beschrieben womit der Pfad gefüllt wird. Wichtig dabei ist das der Wert eindeutig ist um den Datensatz eindeutig zu identifizieren.
Im TCA eines Pfad Feldes kann mann das folgendermaßen sicherstellen:
'path_segment' => [
'exclude' => true,
'label' => $ll . 'tx_news_domain_model_news.path_segment',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'nospace,alphanum_x,lower,unique',
]
],Alternativ können die werte auch aus einem anderen feld generiert werden:
'slug' => [
'exclude' => false,
'label' => 'slug',
'config' => [
'type' => 'slug',
'size' => 50,
'generatorOptions' => [
'fields' => ['title'],
'replacements' => [
'/' => '-'
],
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInSite',
'default' => ''
],
],