[Frage] SelectViewHelper mit Übersetzung der Parameter TYPO3-Version: 8.7.9

  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    29. 03. 2018, 13:58

    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]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.
    [/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.

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


  • 1
  • getit getit
    Jedi-Ritter
    0 x
    137 Beiträge
    4 Hilfreiche Beiträge
    29. 03. 2018, 14:29

    Eine Kollegin hatte die Lösung:

    <f:form.select options="{leistungen}" property="uebergeordneteLeistung" additionalAttributes="{data-placeholder: '{f:translate(key:\'LLL:EXT:kkbaybw/Resources/Private/Language/locallang.xlf:be.chooseLeistung\')}'}" optionLabelField="bezeichnung" multiple="0" class="form-control chosen"/>

  • 1