Hallo,

ich rufe den SelectViewHelper folgendermaßen auf:

[code]
<f:form.select options="{leistungen}" property="uebergeordneteLeistung" additionalAttributes="{data-placeholder: 
'Wählen Sie eine Leistung...'}" optionLabelField="bezeichnung" multiple="0" class="form-control chosen"/>
[/code]

Nun habe ich aber das Problem, dass der Text für das Attribut 
'data-placeholder' aus einem Languagefile kommen soll.

Meine Idee wäre gewesen, einen neuen ViewHelper zu schreiben, der erst schaut 
ob was zu übersetzen ist und dann einfach an den vorhanden SelectViewHelper 
weiterleitet.

[code]
<kkvh:form.selectWithTranslation options="{leistungen}" property="uebergeordneteLeistung" 
additionalAttributes="{data-placeholder: 'LLL:EXT:kkbaybw/Resources/Private/Language/locallang.xlf:be.chooseLeistung;bla'}" 
optionLabelField="bezeichnung" multiple="0" class="form-control chosen"/>
[/code]

[code]
class SelectWithTranslationViewHelper extends SelectViewHelper {
        protected $viewHelperArgs = null;

        public function init() {
                $this->viewHelperArgs = $this->arguments;
        }

        public function render() {
                $this->init();
                $this->_getAttributeFromArgs($this->viewHelperArgs);
                $this->setArguments($this->viewHelperArgs);
                return parent::render();
        }

        protected function _getAttributeFromArgs($arguments) {
                foreach ($arguments as $attribute => $value) {
                        if (is_array($value)) {
                                $result = $this->_getAttributeFromArgs($value);
                                $this->viewHelperArgs[$attribute] = $result;
                        } else {
                                if (strpos(strtolower($value), 'lll:') !== 
false) {
                                        $parts[] = $value;
                                        if (strpos($value, ';') !== false) {
                                                $parts = explode(';', $value);
                                        }
                                        if (count($parts) == 1) {
                                                $result[$attribute] = 
$this->_translated($parts[0], []);
                                        } elseif (count($parts) == 2) {
                                                $result[$attribute] = 
$this->_translated($parts[0], $parts[1]);
                                        }
                                        return $result;
                                }
                        }
                }
        }

        protected function _translated($id, $args) {
                $request = 
$this->renderingContext->getControllerContext()->getRequest();
                $extensionName = $request->getControllerExtensionName();
                return LocalizationUtility::translate($id, $extensionName, 
$args);
        }
}
[/code]

Aber leider funktioniert das nicht. Die Argumente die im 
'SelectWithTranslationVH' entgegengenommen werden ,werden schön übersetzt.
Aber es kommt trotzdem der Placeholder 'LLL:xxxx' raus.

Ich habe gelesen, dass sowieso davon abgeraten wird ViewHelper zu verschachteln 
(https://forum.typo3.org/index.php/t/152059/call-viewhelper-from-another-viewhelper).

Zusammenfassend:
Ich brauche eine Möglichkeit den SelectViewHelper aufzurufen, aber zusätzlich 
auch zusätzliche Attribute (in diesem Bsp.: 'data-placeholder') zu übersetzen.

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an