TCA Checkbox-Felder mit Default-Wert

  • saniki saniki
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    29. 06. 2009, 21:15

    Hallo zusammen

    Für eine Extension möchte ich gerne das File tca.php um Checkboxen ergänzen.

    Mein Code dazu sieht etwa so aus:

    1. 'feldname' => Array (
    2. 'exclude' =>1,
    3. 'label' => 'Elemente anzeigen',
    4. 'config' => Array (
    5. "type" => "check",
    6. "cols" => 1 ,
    7.  
    8. "items" => Array (
    9. Array("Checkbox1", ""),
    10. Array("Checkbox2", ""),
    11. Array("Checkbox3", ""),
    12. Array("Checkbox4", ""),
    13. ),
    14.  
    15. )
    16. ),

    Wie ist es nun möglich, z.Bsp. Checkbox 2 und 4 bereits vorausgewählt (also checked) zu definieren, falls ein Backend-User ein neues Element dieser Extension erstellt?

    Besten Dank schonmal und freundliche Grüsse
    Saniki


  • 1
  • pow pow
    Jedi-Ratsmitglied
    0 x
    719 Beiträge
    0 Hilfreiche Beiträge
    02. 07. 2009, 13:05

    Hi saniki,

    bin noch kein Extensionentwickler, aber habs mir von der tt_news rauskopiert:

    [HTML]'hidden' => Array (
    'l10n_mode' => $hideNewLocalizations,
    'exclude' => 1,
    'label' => 'LLL:EXT:lang/locallang_general.php:LGL.hidden',
    'config' => Array (
    'type' => 'check',
    'default' => '1'
    )[/HTML]

    Vielleicht hilft das.

    Grüße[/HTML]

  • timo_s timo_s
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    18. 01. 2010, 08:37

    Hallo.

    Auch wenn es wahrscheinlich schon gelöst wurde, aber für alle, die einmal vor dem gleichen Problem stehen.

    Die "Items", die vorselektiert werden solle, müssen binäre addiert werden und das Ergebnis in "default" eingetragen werden.
    ([url]http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.2.0/view/4/2/#id4271684[/url])

    Checkbox4 (1) Checkbox3 (0) Checkbox2 (1) Checkbox1 (0) => 1010 = 10

  • blueX blueX
    R2-D2
    0 x
    81 Beiträge
    0 Hilfreiche Beiträge
    17. 11. 2010, 13:02

    [quote="timo_s"]

    Checkbox4 (1) Checkbox3 (0) Checkbox2 (1) Checkbox1 (0) => 1010 = 10

    [/quote]

    Um das vllt nochmal etwas genauer zu erleutern wie dieser Wert zustande kommt:

    Checkbox1 hat den Wert '1',
    Checkbox2 hat den Wert '2',
    Checkbox3 hat den Wert '4',
    Checkbox4 hat den Wert '6',

    man addiert also blos die Werte der aktiven Boxen und hat dann eine Zahl die genau definiert welche der Boxen gemeint sind.

  • sventb sventb
    R2-D2
    0 x
    75 Beiträge
    0 Hilfreiche Beiträge
    21. 03. 2011, 18:21

    Du meinst wohl

    Checkbox1 hat den Wert '1',
    Checkbox2 hat den Wert '2',
    Checkbox3 hat den Wert '4',
    Checkbox4 hat den Wert '[b]8[/b]',

    Und wie kann ich in meinem Plugin nun nachvollziehen, welche Checkboxen der Redakteur aktiviert hat und welche nicht? Muss ich nun den integer Wert aus der Datenbank (z.B. 10) wieder in den binären Wert (z.B 1010) zurückverwandeln (z.B. mit base_convert('1010', 2, 10), beachten sollte man dabei, dass die Reihenfolge dabei umgekehrt ist, der Wert 1000 bedeutet also, dass die Checkbox 4 aktiviert ist) und dann diesen String in einen Array splitten (z.B. array(0 => 1, 1 => 0, 2 => 1, 3 => 0))?? Reichlich kompliziert...

    Gibt es da nicht eine TYPO3-Funktion, die das erledigt?

  • noze noze
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    21. 03. 2011, 19:16

    vieleicht hilft dir das hier weiter:

    1. // Den addierten Wert der Checkboxen aus der DB Tabelle->Spalte holen
    2. $cbwert = $row['tx_feuserext_dienstleistungen']; // <- ist die Spalte mit dem Wert
    3.  
    4. $ret=array(); // Ein Array für die Werte erzeugen
    5. for($i=0;$i<7;$i++) { // Die Bits durchgehen und für jedes Bit den Wert (0 oder 1) ermitteln
    6. $ret[$i]= ($cbwert & pow(2,$i)) ? 1 : 0; // Das Array ausgeben
    7. }
    8. $ausgabe = $ret;
    9.  
    10. $markerArray['###BIT1###']= $ret[0];
    11. $markerArray['###BIT2###']= $ret[1];
    12. $markerArray['###BIT3###']= $ret[2];
    13. $markerArray['###BIT4###']= $ret[3];
    14. $markerArray['###BIT5###']= $ret[4];
    15. $markerArray['###BIT6###']= $ret[5];
    16. $markerArray['###BIT7###']= $ret[6];
    17. //t3lib_div::debug($ausgabe);

    oder du liesst das nochmal ausführlich hier:

    http://www.typo3.net/forum/beitraege/thema/46835/?page=1

    ich hänge auch an dem problem und was ich mich grad frage:

    die extension sr_feUser_register gibt die namen der checkboxen alle über TCA_INPUT aus und liesst sie auch korrekt wieder ein. bei dem beispielcode aus dem link ist die anzahl der felder auf 7 beschränkt.

    wie lese ich die titel der checkboxen aus der locallang_db.xml aus wenn diese gar nicht in der gleichen extension ist? wie gesagt: sr_feUser_register macht es ohne probleme!

    das muss doch auch gehen ohne das ich die anzahl auf 7 festlege?

  • sventb sventb
    R2-D2
    0 x
    75 Beiträge
    0 Hilfreiche Beiträge
    22. 03. 2011, 10:22

    Hallo noze,

    danke für den Hinweis, das hilft mir weiter :)
    Allerdings bin ich gerade dabei, die Mehrfachauswahl mit einem TCA-Feld vom Typ "select" umzusetzen, dafür gibt es die Option "checkbox" für die Einstellung "renderMode". Hierbei wird die Auswahl kommasepariert in der Datenbank gespeichert.

    An den Language-Key jeder Erweiterung solltest du eigentlich mit LLL:EXT:extensionKey/locallang_db.xml:languageKey kommen. Geht das nicht?

  • 99grad 99grad
    T3PO
    0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    26. 11. 2016, 13:35

    Für alle Suchenden habe ich hier mal eine Reihe von Möglichkeiten zusammengefasst, die Default-Werte des TCA in Typo3 zu beeinflussen – auch, wenn man die Werte dynamisch setzen möchte:
    [url]http://labor.99grad.de/2016/11/26/typo3-tca-default-werte-per-tsconfig-setzen/[/url]

  • 1