[Frage] MakeInstance und tt_address TYPO3-Version: 6.2.7

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    17. 11. 2014, 17:57

    Hallo zusammen,

    habe grade ein kleines Problem, bei dem ich mich entweder blöd anstelle oder ersteres.
    Es geht sich um folgendes:
    Ich habe ein USER-Skript das auf tt_address zurückgreift.
    Sinnigerweise mit makeInstance('tx_ttaddress_pi1') instanziiert.
    Seltsamerweise wird die Klasse nicht gefunden, obwohl das Statische Template hierfür als allererstes bzw. an oberster Stelle auf der Root-Seite eingebunden ist.
    Sobald ich die PHP-Datei per Require einbunden habe, geht das dann auch.
    Nachdem aber das Objekt instanziiert ist, fehlt dem... naja, so ziemlich alles. Beim cObj mal angefangen.
    Ich hatte das zuvor in einer 6.1.7 Installation ausprobiert, da hat es noch funktioniert...
    Vielleicht kann mich einer mit 'nem guten Tipp voranbringen?

    1. <?php
    2. namespace meinNamespace;
    3.  
    4. class meineMessen {
    5.  
    6. protected static $initiation = false;
    7. protected static $abspath = '';
    8.  
    9. public function __construct() {
    10.  
    11. }
    12.  
    13. protected function main() {
    14. if(! class_exists('tx_ttaddress_pi1')) {
    15. require_once 'typo3conf/ext/tt_address/pi1/class.tx_ttaddress_pi1.php';
    16. }
    17. self::$abspath = dirname(__FILE__).'/';
    18. self::$initiation = true;
    19. }
    20.  
    21. public function show($content,$conf) {
    22. $this->main();
    23. $tt_addr = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tx_ttaddress_pi1',$content,$conf);
    24. $tt_addr->main();
    25. var_dump($tt_addr);
    26. }
    27.  
    28. }
    29. ?>

    1. Ausgabe:
    2.  
    3. Fatal error: Call to a member function stdWrap() on a non-object in /var/www/vhosts/www.gemu-group.com/htdocs/typo3conf/ext/tt_address/pi1/class.tx_ttaddress_pi1.php on line 181
    4.  
    5.  
    6.  
    7.  
    8. Dump von $tt_addr:
    9.  
    10.  
    11.  
    12. tx_ttaddress_pi1
    13. prefixId => 'tx_ttaddress_pi1' (16 chars)
    14. scriptRelPath => 'pi1/class.tx_ttaddress_pi1.php' (30 chars)
    15. extKey => 'tt_address' (10 chars)
    16. pi_checkCHash => TRUE
    17. conf => NULL
    18. ffData => NULL
    19. cObj => NULL
    20. piVars => array(empty)
    21. internal => array(5 items)
    22. LOCAL_LANG => array(empty)
    23. LOCAL_LANG_UNSET => array(empty)
    24. LOCAL_LANG_charset => array(empty)
    25. LOCAL_LANG_loaded => 0 (integer)
    26. LLkey => 'de' (2 chars)
    27. altLLkey => '' (0 chars)
    28. LLtestPrefix => '' (0 chars)
    29. LLtestPrefixAlt => '' (0 chars)
    30. pi_isOnlyFields => 'mode,pointer' (12 chars)
    31. pi_alwaysPrev => 0 (integer)
    32. pi_lowerThan => 5 (integer)
    33. pi_moreParams => '' (0 chars)
    34. pi_listFields => '*' (1 chars)
    35. pi_autoCacheFields => array(empty)
    36. pi_autoCacheEn => 0 (integer)
    37. pi_USER_INT_obj => FALSE
    38. pi_EPtemp_cObj => NULL
    39. pi_tmpPageId => 0 (integer)

    P.S:. Typo3 6.2.4

    God's in his heaven, all's right with the world

  • Hilfreichster Beitrag

  • toifel toifel
    Jedi-Ratsmitglied
    1 x
    831 Beiträge
    96 Hilfreiche Beiträge
    18. 11. 2014, 10:04 - Hilfreichster Beitrag

    Anstatt makeInstance() mal mit objectManager->get() versuchen, was da so zurück kommt.
    Und evlt. hilft dir noch configurationManager->getConfiguration(), je nachdem was alles ausgelesen werden soll.


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    1 x
    831 Beiträge
    96 Hilfreiche Beiträge
    18. 11. 2014, 10:04

    Anstatt makeInstance() mal mit objectManager->get() versuchen, was da so zurück kommt.
    Und evlt. hilft dir noch configurationManager->getConfiguration(), je nachdem was alles ausgelesen werden soll.

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    18. 11. 2014, 10:43

    Danke für den Tipp, den ObjectManger kannte ich noch nicht. Leider gibt der aber dasselbe zurück.
    Aus irgendeinem Grund ist zu diesem Zeitpunkt ( wird in tt_content.list verwendet und überschreibt das eigentliche tt_address-Plugin ) die Klasse nicht eingebunden.
    Ist aber nicht weiter tragisch, eigentlich wollte ich nur der Einfachheit halber die tt_address-Funktionen zum Auslesen der referenzierten IDs verwenden.
    Da hier die Attribute per default public sind, kann man das cOBj einfach manuell übergeben, dann funktioniert's.
    Danke jedenfalls ;)
    Ich hab's jetzt so gelöst:

    1. if(! class_exists('tx_ttaddress_pi1')) {
    2. require_once 'typo3conf/ext/tt_address/pi1/class.tx_ttaddress_pi1.php';
    3. }
    4. $ttadr = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tx_ttaddress_pi1',$content,$conf);
    5. $ttadr->cObj = $this->cObj;
    6. $ttadr->main($content,$conf['userFunc.']);
    7. $singleSelection = $ttadr->getSingleRecords();
    8. $groupSelection = $ttadr->getRecordsFromGroups();

    God's in his heaven, all's right with the world

  • 1