Readonly-Field [Gelöst]

  • brokemeister brokemeis...
    Jedi-Ratsmitglied
    0 x
    762 Beiträge
    0 Hilfreiche Beiträge
    05. 10. 2007, 18:49

    Ich habe schon einiges ausprobiert, aber leider habe ich noch keine Lösung...

    Ich möchte gerne eine Feld im TCEform per $TCA erzeugen, was nur lesbar ist, aber dennoch den Inhalt übergibt, sodass man das Feld durch die Manipulation per Hook ändern kann.

    1. "cbm_history" => Array (
    2. "exclude" => 1,
    3. "label" => "LLL:EXT:my_ext/locallang_db.xml:tx_myext_table.cbm_history",
    4. "config" => Array (
    5. "type" => "text",
    6. "cols" => "30",
    7. "rows" => "5",
    8. "readOnly" => 1,
    9. ),
    10.  
    11. ),

    Hat jemand eine Idee wie man das Ganze machen könnte? Wenn readOnly = 1 wird der Wert nicht per Form übergeben...


  • 1
  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    05. 10. 2007, 18:50

    type => "none"

    steht alles in der doku

    georg

  • brokemeister brokemeis...
    Jedi-Ratsmitglied
    0 x
    762 Beiträge
    0 Hilfreiche Beiträge
    08. 10. 2007, 13:59

    Mit dem type=> "none" wird das value auch nicht übergegeben zum Speichern/Manipulieren.

    1. function processDatamap_preProcessFieldArray(&$fieldArray, $table, $id, &$pObj) {
    2. print_r($fieldArray["cbm_history"]);
    3. }

    Beide Varianten ergeben wenn in der DB was drin steht bzw. im Form was angezeigt wird, dass das Array-Feld leer ist...

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    08. 10. 2007, 14:43

    üblicherweise wird in dem array nur das stehen was sich geändert hat

    georg

  • brokemeister brokemeis...
    Jedi-Ratsmitglied
    0 x
    762 Beiträge
    0 Hilfreiche Beiträge
    08. 10. 2007, 15:22

    Ne an der Stelle (processDatamap_preProcessFieldArray) stehen alle Werte drin, ob sie sich geändert haben oder nicht. Nur nicht die Felder die "Readonly" oder "None" sind.

    Bei Readonly kann man jedoch was in das Feld per PHP reinschreiben, hingegen bei None wird das Feld auch beim Schreiben ignoriert...

    Lösung: Ich lade die Felder per SQLquery nach und verwerte diese dann.

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    08. 10. 2007, 15:43

    oder processDatamap_postProcessFieldArray

    georg

  • dachande dachande
    T3PO
    0 x
    10 Beiträge
    1 Hilfreiche Beiträge
    04. 10. 2018, 11:36

    Das Problem hier ist schon ziemlich alt, aber ich stehe derzeit vor demselben Problem. Ich habe ein Feld im TCA als readOnly definiert, damit der Redakteur es sehen, aber nicht ändern kann.

    Wird ein neuer Datensatz angelegt, soll das Feld einmal initial aus anderen Feldern befüllt werden, sich dann aber, wenn es einmal befüllt wurde, nicht mehr ändern.

    Über processDatamap_postProcessFieldArray() bekommt man ja nur die Felder in $fieldArray, die sich geändert haben. Hier kann ich also nicht ansetzen.

    Über processDatamap_preProcessFieldArray() bekomme ich sämtliche Felder in $fieldArray ausgegeben, außer die, die auf readOnly gesetzt oder vom Typ 'none' sind. Ich kann aber zur initialen Befüllung das Feld einfach in $fieldArray mit dem gewünschten Wert aufnehmen und es wird im Datensatz gespeichert.

    Allerdings kann ich bei einem erneuten Speichervorgang an dieser Stelle nicht prüfen, ob bereits etwas in dem Feld steht, da es ja bei Aufruf der Methode in $fieldArray nicht enthalten ist.

    Die Lösung, das Feld per SQL Query nachträglich zu holen, möchte ich eigentlich vermeiden. Das wäre aus meiner Sicht nur eine weitere unnötige Datenbankabfrage.

    Gibt es noch eine andere Möglichkeit? Vielleicht einen anderen Hook?

  • 1