Werte werden nicht gespeichert [Gelöst]

  • mato mato
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    08. 02. 2012, 11:51

    Hallo zusammen

    Ich versuche gerade eine Extension mit Extbase umzusetzen. Jetzt habe ich das Problem, dass es keine Werte übernimmt wenn ich verusche über ein Repository einen Datensatz zu speichern.

    [b]ext_tables.php[/b]

    1. $TCA['tx_tsext_domain_model_eventtext'] = array (
    2. 'ctrl' => array (
    3. 'title' => 'Event Text',
    4. 'transOrigPointerField' => 'i18n_parent',
    5. 'transOrigDiffSourceField' => 'i18n_diffsource',
    6. 'languageField' => 'sys_language_uid',
    7. 'enablecolumns' => array(),
    8. 'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'Configuration/TCA/EventText.php'
    9. )
    10. );

    [b]Configuration/TCA/EventText.php[/b]

    1. $TCA['tx_tsext_domain_model_eventtext'] = array(
    2. 'ctrl' => $TCA['tx_tsext_domain_model_eventtext']['ctrl'],
    3. 'columns' => array(
    4. 'sys_language_uid' => array(
    5. 'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
    6. 'config' => array(
    7. 'type' => 'select',
    8. 'foreign_table' => 'sys_language',
    9. 'foreign_table_where' => 'ORDER BY sys_language.title',
    10. 'items' => array(
    11. 'LLL:EXT:lang/locallang_general.xml:LGL.default_value',
    12. 0,
    13. ),
    14. ),
    15. ),
    16. ),
    17.  
    18. 'i18n_parent' => array(
    19. 'displayCond' => 'FIELD:sys_language_uid:>:0',
    20. 'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.l18n_parent',
    21. 'config' => array(
    22. 'type' => 'select',
    23. 'items' => array(
    24. '',
    25. 0,
    26. ),
    27. ),
    28. 'foreign_table' => 'tx_tsext_domain_model_eventtext',
    29. 'foreign_table_where' => 'AND tx_tsext_domain_model_eventtext.sys_language_uid IN (-1,0)',
    30. ),
    31. ),
    32.  
    33. 'i18n_diffsource' => array(
    34. 'config'=>array(
    35. 'type'=>'passthrough',
    36. ),
    37. ),
    38.  
    39. 'event_name' => array(
    40. 'label' => 'LLL:EXT:tsext/Resources/Language/locallang.xml:eventText.event_name',
    41. 'config' => array(
    42. 'type' => 'input',
    43. 'size' => '30',
    44. 'eval' => 'trim,required'
    45. )
    46. ),
    47.  
    48. 'description' => array(
    49. 'label' => 'LLL:EXT:tsext/Resources/Language/locallang.xml:eventText.description',
    50. 'config' => array(
    51. 'type' => 'text',
    52. 'eval' => 'trim'
    53. )
    54. ),
    55.  
    56. 'infos' => array(
    57. 'label' => 'LLL:EXT:tsext/Resources/Language/locallang.xml:eventText.infos',
    58. 'config' => array(
    59. 'type' => 'text',
    60. 'eval' => 'trim'
    61. )
    62. )
    63. )
    64. );

    [b]Classes/Controller/Domain/Model/EventText.php[/b]

    1. /**
    2.  * @scope prototype
    3.  * @entity
    4.  * @api
    5.  */
    6. class Tx_Tsext_Domain_Model_EventText extends Tx_Extbase_DomainObject_AbstractEntity {
    7. /**
    8.   * @var string
    9.   */
    10. private $description;
    11.  
    12. /**
    13.   * @var string
    14.   */
    15. private $eventName;
    16.  
    17. /**
    18.   * @var string
    19.   */
    20. private $i18nDiffsource;
    21.  
    22. /**
    23.   * @var int
    24.   */
    25. private $i18nParent = 0;
    26.  
    27. /**
    28.   * @var string
    29.   */
    30. private $infos;
    31.  
    32. /**
    33.   * @var int
    34.   */
    35. private $sysLanguageUid;
    36.  
    37. /**
    38.   * @return string
    39.   */
    40. public function getDescription() {
    41. return $this->description;
    42. }
    43.  
    44. /**
    45.   * @return string
    46.   * @api
    47.   */
    48. public function getEventName() {
    49. return $this->eventName;
    50. }
    51.  
    52. /**
    53.   * @return string
    54.   */
    55. public function getI18nDiffsource() {
    56. return $this->i18nDiffsource;
    57. }
    58.  
    59. /**
    60.   * @return int
    61.   */
    62. public function getI18nParent() {
    63. return $this->i18nParent;
    64. }
    65.  
    66. /**
    67.   * @return string
    68.   */
    69. public function getInfos() {
    70. return $this->infos;
    71. }
    72.  
    73. /**
    74.   * @return int
    75.   */
    76. public function getLanguage() {
    77. return $this->sysLanguageUid;
    78. }
    79.  
    80. /**
    81.   * @param string $description
    82.   */
    83. public function setDescription($description) {
    84. $this->description = $description;
    85. }
    86.  
    87. /**
    88.   * @param string $name
    89.   * @return void
    90.   * @api
    91.   */
    92. public function setEventName($name) {
    93. $this->eventName = $name;
    94. }
    95.  
    96. /**
    97.   * @param string $i18nDiffsource
    98.   */
    99. public function setI18nDiffsource($i18nDiffsource) {
    100. $this->i18nDiffsource = $i18nDiffsource;
    101. }
    102.  
    103. /**
    104.   * @param int $i18nParent
    105.   */
    106. public function setI18nParent($i18nParent) {
    107. $this->i18nParent = $i18nParent;
    108. }
    109.  
    110. /**
    111.   * @param string $infos
    112.   */
    113. public function setInfos($infos) {
    114. $this->infos = $infos;
    115. }
    116.  
    117. /**
    118.   * @param int $lang
    119.   */
    120. public function setLanguage($lang) {
    121. $this->sysLanguageUid = $lang;
    122. }
    123. }

    [b]Classes/Domain/Repository/EventTestRepository.php[/b]

    1. /**
    2.  * @api
    3.  */
    4. class Tx_Tsext_Domain_Repository_EventTextRepository extends Tx_Extbase_Persistence_Repository {
    5.  
    6. }

    Wenn ich dann versuche im Controller einen Datensatz abzuspeichern

    1. $r = $this->objectManager->get('Tx_Tsext_Domain_Repository_EventTextRepository');
    2. $t = $this->objectManager->create('Tx_Tsext_Domain_Model_EventText');
    3. $t->setEventName('Test Event');
    4. $t->setDescription('Hello world');
    5. $t->setInfos('Some information');
    6. $t->setLanguage(2);
    7. $r->add($t);

    dann werden nur NULL-Werte in die Datenbank geschrieben. Ich habe meinen Code mit anderen Extensions verglichen und kann den Fehler einfach nicht finden. Kann mir jemand sagen, was ich hier falsch mache?


  • 1
  • BFSven BFSven
    R2-D2
    0 x
    106 Beiträge
    2 Hilfreiche Beiträge
    08. 02. 2012, 12:53

    Genau das gleiche Problem hatte ich auch, bei mir lags aber daran, dass ich gar kein TCA definiert hatte. :o

    Ich kann auf den ersten Blick aber auch keinen Fehler entdecken.

    Probiere doch einfach mal das Model mit dem Extension-Builder zu erstellen und vergleiche dann die generierten Dateien mit Deinen, eventuell ist es nur ein kleiner Schreibfehler

    Gruß,
    Sven

  • mato mato
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    08. 02. 2012, 14:35

    Danke für den Tip mit dem Extension-Builder. Es lag nicht an der TCA sondern am Model. Die Sichtbarkeit der Attribute muss auf protected sein da sonst die Basisklasse nicht auf diese zugreiffen kann.

  • 1