Sprache als Label für erfassten Datensatz

  • sopinon sopinon
    R2-D2
    0 x
    116 Beiträge
    0 Hilfreiche Beiträge
    26. 05. 2007, 16:41

    Hallo zusammen,

    Ich habe da ein kleines Problem mit einer Extension welche ich geschrieben habe. Ich habe eine Tabelle mit Titel und einer Sprachauswahl (als normales selector Feld! Keine Lokalisierung).

    Ich möchte nun, dass wenn ein Datensatz erstellt wird, dieser bei der Auflistung das Label der zuvor selektierten Sprache erhält. Wenn ich das so mache wie unten bei ext_tables.php wird natürlich nur die sys_language_uid der jeweiligen Sprache ausgegen, ich will da jedoch den Titel der Sprache haben. Wie kann ich das machen. Gibt es da eine Möglichkeit ein subquery einzufügen? "(select title from sys_language where uid = language) as title_lang". Habe versucht diesen Code bei diversen Felder Listen unter zu bringen, und "title_lang" dann als label zu definieren, doch das klappt leider nicht...

    Ich gebe zu, es wäre "murx", da subqueries nicht bei allen mysql versionen unterstützt wird. Aber egal... ;)

    So sieht ext_tables.php aus:

    1. <?php
    2. if (!defined ('TYPO3_MODE')) die ('Access denied.');
    3. $TCA["tx_adiatest_test"] = array (
    4. "ctrl" => array (
    5. 'title' => 'LLL:EXT:adia_test/locallang_db.xml:tx_adiatest_test',
    6. 'label' => 'language',
    7. 'tstamp' => 'tstamp',
    8. 'crdate' => 'crdate',
    9. 'cruser_id' => 'cruser_id',
    10. 'default_sortby' => "ORDER BY crdate",
    11. 'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'tca.php',
    12. 'iconfile' => t3lib_extMgm::extRelPath($_EXTKEY).'icon_tx_adiatest_test.gif',
    13. ),
    14. "feInterface" => array (
    15. "fe_admin_fieldList" => "language, title",
    16. )
    17. );
    18. ?>

    Und so tca.php:

    1. <?php
    2. if (!defined ('TYPO3_MODE')) die ('Access denied.');
    3.  
    4. $TCA["tx_adiatest_test"] = array (
    5. "ctrl" => $TCA["tx_adiatest_test"]["ctrl"],
    6. "interface" => array (
    7. "showRecordFieldList" => "language,title"
    8. ),
    9. "feInterface" => $TCA["tx_adiatest_test"]["feInterface"],
    10. "columns" => array (
    11. "language" => Array (
    12. "exclude" => 1,
    13. "label" => "LLL:EXT:adia_test/locallang_db.xml:tx_adiatest_test.language",
    14. "config" => Array (
    15. "type" => "select",
    16. "items" => Array (
    17. Array("",0),
    18. ),
    19. "foreign_table" => "sys_language",
    20. "foreign_table_where" => "ORDER BY sys_language.uid",
    21. "size" => 1,
    22. "minitems" => 0,
    23. "maxitems" => 1,
    24. )
    25. ),
    26. "title" => Array (
    27. "exclude" => 1,
    28. "label" => "LLL:EXT:adia_test/locallang_db.xml:tx_adiatest_test.title",
    29. "config" => Array (
    30. "type" => "input",
    31. "size" => "30",
    32. )
    33. ),
    34. ),
    35. "types" => array (
    36. "0" => array("showitem" => "language;;;;1-1-1, title;;;;2-2-2")
    37. ),
    38. "palettes" => array (
    39. "1" => array("showitem" => "")
    40. )
    41. );
    42. ?>


  • 1
  • andi_k andi_k
    T3PO
    0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    13. 08. 2007, 17:12

    Hi,

    soweit ich weiss exisitert dieses Problem erst seit Version 4.1.
    Schau dir das hier mal an: [url]http://bugs.typo3.org/view.php?id=5683[/url]

    Der Ansatz mit dem Subquery wird denke ich nicht funktionieren.

    Gruß, Andi

  • mmecker mmecker
    Padawan
    0 x
    49 Beiträge
    0 Hilfreiche Beiträge
    11. 09. 2007, 22:58

    Wenn ich Dich richtig verstanden habe, ist das, was Du suchst:

    1. "columns" => array (
    2. 'sys_language_uid' => array (
    3. 'exclude' => 1,
    4. 'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
    5. 'config' => array (
    6. 'type' => 'select',
    7. 'foreign_table' => 'sys_language',
    8. 'foreign_table_where' => 'ORDER BY sys_language.title',
    9. 'items' => array(
    10. array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages', -1),
    11. array('LLL:EXT:lang/locallang_general.xml:LGL.default_value', 0)
    12. )
    13. )
    14. ),
    15. ...
    16. )

    Bei mir jedenfalls hat es mit Typo3 4.1.2 den gewünschten Effekt...
    (= eine Auswahlbox mit den Einträgen Alle, Standard, English, ...)

    Allerdings wird in die Zieltabelle dann natürlich die sys_language_uid eingetragen, die sich auf den Eintrag in der sys_language-Tabelle bezieht, nicht die Sprache im Klartext - falls das gewünscht gewesen sein sollte. Dazu gehört dann auch der ctrl-Eintrag

    1. 'languageField' => 'sys_language_uid',

  • 1