ShowRowViewHelper
Um einen Viewhelper zu erstellen zunächst das Verzeichnis Classes/ViewHelpers/Detail anlegen. Dort eine Datei anlegen ShowRowViewHelper.php. Dieser ViewHelper nimmt 2 Argumente: Label und Value und gibt ein Feld mit Beschriftung für die Detailansicht aus. Der Html Code ist per TS konfigurierbar.
<?php
class Tx_Rsysproductbase_ViewHelpers_Detail_ShowRowViewHelper extends Tx_Fluid_ViewHelpers_Format_AbstractEncodingViewHelper implements t3lib_Singleton {
/**
* shows a detail row wrapped with TS settings
*
* @param string $value string show
* @param string $label string for label
* @return string the altered string
* @author Erwin Knoll <typo3coding@rootsystem.de>, Rootsystem
* @api
*/
public function render($value = NULL, $label=NULL) {
if(!empty($value)) {
$value_parsed = $value;
// wrap
$settings = $this->templateVariableContainer->get('settings');
$wrap = $settings['Detail']['label_wrap'];
if($label && (strpos($label,'tx_rsysproductbase') === 0)) {
$label = Tx_Extbase_Utility_Localization::translate($label, 'Rsysproductbase');
}
$ret = preg_replace ('/\|/',$label, $wrap, 1);
$ret = preg_replace ('/\|/',$value_parsed, $ret, 1);
} else {
$ret = '';
}
return $ret;
}
}
?>
Konfiguration des Html wraps mit TS:
plugin.tx_rsysproductbase {
Detail {
label_wrap (
<tr>
<td class="product_property_label">
|
</td>
<td class="product_property_value">
|
</td>
</tr>
)
}
Im Fluid Template:
<rsys:Detail.ShowRow value="{product.title}" label="tx_rsysproductbase_domain_model_product.title"/>
Das ist zwar nicht besonders intelligentes, vereinfacht aber die Erstellung der Templates ungemein - weiterhin wird hier die ganze Ausgabe unterdrückt, wenn das Feld keinen Wert hat (Leerstring oder 0).





