[Frage] Wie bekomme ich das hidden-Field im Model? [Gelöst] TYPO3-Version: 6.1.0


  • 0 x
    06. 08. 2013, 18:59

    Hallo,

    ich möchte im Backend ein Modul erzeugen mit welchem ich Elemente (Videos) komfortabel verwalten kann.
    Dazu habe ich ein Video-Model erstellt und dies um die Sys_Categories erweitert, da diese zur Sortierung und als "Ordner" verwendet werden sollen.

    Wenn ich im BE jetzt die Funktion ->findAll(); auf mein Repository ausführe, bekomme ich nur die Datensätze welche aktiv sind. Ich möchte aber auch die Inaktiven sowie den Status ob hidden = 0 oder 1.

    Damit möchte ich den Datensatz aktivieren oder deaktivieren.

    Gibt es eine "einfache" Funktion mit der ich ->findAll() dazu bewegen kann, bzw. wie muss ich hier vorgehen?

    Vielen Dank für jegliche Hilfe!

    Tags: Extbase

  • 0 x
    07. 08. 2013, 07:57 - Lösung

    Vielen Dank für deine Hilfe! Das war's!

    Ich muss zugeben, auf den letzten Teil hätte ich auch selbst kommen können... #sigh#

    Nochmals DANKE!

  • Hilfreichster Beitrag

  • sunixzs sunixzs
    R2-D2
    1 x
    123 Beiträge
    2 Hilfreiche Beiträge
    06. 08. 2013, 20:29 - Hilfreichster Beitrag

    Hallo kapale,

    Das hat was mit den enableFields zu tun. Diese kann man deaktivieren und "manuell nachbauen", aber eben ohne das hidden-Attribut.

    1. function findAllForBackend($pid = 0) {
    2. $query = $this->createQuery();
    3. $query->getQuerySettings()->setRespectEnableFields(FALSE);
    4. $query->getQuerySettings()->setRespectStoragePage(FALSE);
    5.  
    6. $enableFieldsAnd = array();
    7. $enableFieldsAnd[] = $query->equals("pid", $pid); // $_GET['id'] in backend
    8. $enableFieldsAnd[] = $query->equals("deleted", 0);
    9. //$enableFieldsAnd[] = andere enableFields wie start_time, end_time usw.
    10.  
    11. $query->matching($query->logicalAnd($and));
    12.  
    13. return $query->execute();
    14. }

    LG sun


  • 1
  • sunixzs sunixzs
    R2-D2
    1 x
    123 Beiträge
    2 Hilfreiche Beiträge
    06. 08. 2013, 20:29

    Hallo kapale,

    Das hat was mit den enableFields zu tun. Diese kann man deaktivieren und "manuell nachbauen", aber eben ohne das hidden-Attribut.

    1. function findAllForBackend($pid = 0) {
    2. $query = $this->createQuery();
    3. $query->getQuerySettings()->setRespectEnableFields(FALSE);
    4. $query->getQuerySettings()->setRespectStoragePage(FALSE);
    5.  
    6. $enableFieldsAnd = array();
    7. $enableFieldsAnd[] = $query->equals("pid", $pid); // $_GET['id'] in backend
    8. $enableFieldsAnd[] = $query->equals("deleted", 0);
    9. //$enableFieldsAnd[] = andere enableFields wie start_time, end_time usw.
    10.  
    11. $query->matching($query->logicalAnd($and));
    12.  
    13. return $query->execute();
    14. }

    LG sun


  • 0 x
    06. 08. 2013, 21:48

    Hallo sun,

    vielen Dank erst mal für deine schnelle Antwort.
    Leider bin ich - glaube ich - noch nicht ganz am Ziel.
    Ich brauche den Wert des Feldes "hidden" in meinem Model, damit ich z.B. mit einer <f:if> Bedienung den Zustand visible/hidden mit der Lampe darstellen kann.
    Leider bekomme ich mit deinem Code dieses Feld nicht... :-/

    Das bekomme ich zurück mit einem var_dump und ->toArray()

    1. 0 =>
    2. object(KSS\Videomanager\Domain\Model\Video)[309]
    3. protected 'title' => string 'Hello World!' (length=12)
    4. protected 'description' => string 'fasd lfhals d' (length=13)
    5. protected 'posterImage' => string '' (length=0)
    6. protected 'sourceFile' => string '' (length=0)
    7. protected 'videoFormat' => string '' (length=0)
    8. protected 'runtime' => int 1375816188
    9. protected 'bytesize' => int 2342323
    10. protected 'lizenz' => string 'MIT' (length=3)
    11. protected 'captions' =>
    12. object(TYPO3\CMS\Extbase\Persistence\ObjectStorage)[336]
    13. private 'warning' => string 'You should never see this warning. If you do, you probably used PHP array functions like current() on the TYPO3\CMS\Extbase\Persistence\ObjectStorage. To retrieve the first result, you can use the rewind() and current() methods.' (length=228)
    14. protected 'storage' =>
    15. array (size=0)
    16. ...
    17. protected 'isModified' => boolean false
    18. protected 'addedObjectsPositions' =>
    19. array (size=0)
    20. ...
    21. protected 'removedObjectsPositions' =>
    22. array (size=0)
    23. ...
    24. protected 'positionCounter' => int 0
    25. protected 'categories' =>
    26. object(TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage)[361]
    27. private 'warning' => string 'You should never see this warning. If you do, you probably used PHP array functions like current() on the TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage. To retrieve the first result, you can use the rewind() and current() methods.' (length=240)
    28. protected 'dataMapper' =>
    29. object(TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper)[176]
    30. ...
    31. protected 'parentObject' =>
    32. &object(KSS\Videomanager\Domain\Model\Video)[309]
    33. protected 'propertyName' => string 'categories' (length=10)
    34. protected 'fieldValue' => string '0' (length=1)
    35. protected 'isInitialized' => boolean false
    36. protected 'storage' =>
    37. array (size=0)
    38. ...
    39. protected 'isModified' => boolean false
    40. protected 'addedObjectsPositions' =>
    41. array (size=0)
    42. ...
    43. protected 'removedObjectsPositions' =>
    44. array (size=0)
    45. ...
    46. protected 'positionCounter' => int 0
    47. private 'warning' (TYPO3\CMS\Extbase\Persistence\ObjectStorage) => string 'You should never see this warning. If you do, you probably used PHP array functions like current() on the TYPO3\CMS\Extbase\Persistence\ObjectStorage. To retrieve the first result, you can use the rewind() and current() methods.' (length=228)
    48. protected 'uid' => int 1
    49. protected '_localizedUid' => int 1
    50. protected '_languageUid' => int 0
    51. protected 'pid' => int 1
    52. private '_isClone' (TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject) => boolean false
    53. private '_cleanProperties' (TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject) =>
    54. array (size=12)
    55. 'title' => string 'Hello World!' (length=12)
    56. 'description' => string 'fasd lfhals d' (length=13)
    57. 'posterImage' => string '' (length=0)
    58. 'sourceFile' => string '' (length=0)
    59. 'videoFormat' => string '' (length=0)
    60. 'runtime' => int 1375816188
    61. 'bytesize' => int 2342323
    62. 'lizenz' => string 'MIT' (length=3)
    63. 'captions' =>
    64. object(TYPO3\CMS\Extbase\Persistence\ObjectStorage)[334]
    65. ...
    66. 'categories' =>
    67. object(TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage)[359]
    68. ...
    69. 'uid' => int 1
    70. 'pid' => int 1

    Hast du mir hier noch einen Tipp? Dann wäre alles perfekt!

    Herzlichen Dank!

  • sunixzs sunixzs
    R2-D2
    1 x
    123 Beiträge
    2 Hilfreiche Beiträge
    07. 08. 2013, 06:03

    Moin,

    meine Methode ist dafür da, auch 'hidden'-Datensätze aus dem Repo zu holen. Vllt. hatte ich da was missverstanden.

    Wenn du das Attribut 'hidden' im Model setzen oder holen willst, müsste es eigentlich reichen, eben diese getter und setter zu definieren. Ein Mapping des Attributs 'hidden' im Model zum Datenbankfeld 'hidden' müsste bereits vorhanden sein, da 'hidden' im TCA definiert ist.

    1. // sinngemaess:
    2. class KSS\Videomanager\Domain\Model\Video {
    3. /**
    4.   * @var boolean
    5.   */
    6. protected $hidden;
    7.  
    8. /**
    9.   * @return boolean $hidden
    10.   */
    11. public function getHidden() {
    12. return $this->hidden;
    13. }
    14.  
    15. /**
    16.   * @return boolean $hidden
    17.   */
    18. public function isHidden() {
    19. return $this->getHidden();
    20. }
    21.  
    22. /**
    23.   * @param boolean $hidden
    24.   * @return void
    25.   */
    26. public function setHidden($hidden) {
    27. $this->hidden = $hidden;
    28. }
    29. }

    LG sun


  • 0 x
    07. 08. 2013, 07:57

    Vielen Dank für deine Hilfe! Das war's!

    Ich muss zugeben, auf den letzten Teil hätte ich auch selbst kommen können... #sigh#

    Nochmals DANKE!

  • 1