't3lib_div :: makeInstance' не работает в TYPO3 V6.2.x

я использую TYPO3 v6.2.x Я пробовал одно расширение, используя созданное в v4.1.x

Но t3lib_div::makeInstance код не работает в TYPO3 v6.2.x

Как я могу переписать следующий код

$this->myRepository = t3lib_div::makeInstance('Tx_newExt_Domain_Repository_myRepository');

в TYPO3 v6.2.x

заранее спасибо

ИЗМЕНЕНО

Добавлены полные файлы для справки

Мой контроллер размещен на месте

"typo3conf / ext / new_extension / Classes / Controller / TTBAnbieterController.php"

    class Tx_NewExtension_Controller_TTBAnbieterController extends Tx_Extbase_MVC_Controller_ActionController {

    /**
     * @var Tx_NewExtension_Domain_Repository_TTBAnbieterRepository
     */
    protected $tTBAnbieterRepository;


    public function initializeAction() {          

        $this->tTBAnbieterRepository = TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Tx_NewExtension_Domain_Repository_TTBAnbieterRepository');
        $extbaseFrameworkConfiguration = Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration(); 
        $HeaderData = "<link rel='stylesheet' type='text/css' href='xxxxx'/>";
        $this->response->addAdditionalHeaderData($HeaderData);  
        $this->tTBLocationsProdukteGruppenRepository->CreateSpecialSeoTitle();

    }
}

Мой репозиторий размещен в месте

"/typo3conf/ext/new_extension/Classes/Domain/Repository/TTBAnbieterRepository.php"

class Tx_NewExtension_Domain_Repository_TTBAnbieterRepository extends Tx_Extbase_Persistence_Repository {


         public function getSelectedAnbieter($iAnbieterOfLocation)
        {
            $sql = "SELECT * FROM tx_NewExtension_domain_model_ttbanbieter WHERE uid = '".$iAnbieterOfLocation."' ";
            $data = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $sql);  

            $aResults = array();
            $iCount = 0;
            while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($data)) {

                $aResults[$iCount] = $row;
                $iCount++;           
            }

            return $aResults;        
        }

    }

Это полный код для контроллера и репозитория.


person Vishnu Prasad    schedule 09.04.2015    source источник
comment
Покажите нам свой класс репозитория - целиком, в том виде, в каком он есть   -  person biesior    schedule 09.04.2015
comment
@biesior Я добавил полный код..проверьте   -  person Vishnu Prasad    schedule 10.04.2015
comment
В первый момент я подумал, что это дело случая, поскольку вы исправили, очистите кеш системы, также подумайте об использовании инъекции, как предлагает Даниэль. и помните, что больше не используйте классы t3lib_*, они обесценились в 6.x и удалены в 7.x +   -  person biesior    schedule 10.04.2015
comment
@biesior ys это сработало. Теперь столкнулся с другой проблемой. Аргумент 1, переданный в TYPO3 \\ CMS \\ Fluid \\ ViewHelpers \\ Widget \\ PaginateViewHelper :: render (), должен реализовывать интерфейс TYPO3 \ CMS \ Extbase \ Persistence \ QueryResultInterface, массив, указанный в / var / www / dev / ti-typo3 / typo3 / sysext / fluid / Classes / ViewHelpers / Widget / PaginateViewHelper.php в строке 67. Можете ли вы помочь мне в этом?   -  person Vishnu Prasad    schedule 10.04.2015
comment
Вам нужно использовать запросы Extbase и возвращать их вместо массива ... В любом случае будьте осторожны с Paginate VH, это может быть настоящим убийцей производительности! (он повторяет некоторые операции с БД, поэтому ваша страница замедлится, особенно с большими наборами данных), лучше написать собственный пагинатор   -  person biesior    schedule 10.04.2015
comment
@biesior Как мне удалить эту ошибку. Меня это поразило.   -  person Vishnu Prasad    schedule 10.04.2015
comment
как я уже писал: You need to use Extbase queries and return it instead of array... см. это красивое сообщение в блоге, чтобы узнать, как создавать запросы extbase: blog.typoplanet.de/2010/01/27/ т.е. public function findRecentByBlog(...   -  person biesior    schedule 10.04.2015
comment
@biesior: спасибо .... дай проверить ..   -  person Vishnu Prasad    schedule 10.04.2015


Ответы (1)


Вы должны использовать внедрение зависимостей, чтобы позволить extbase выполнить инициализацию ваших зависимостей за вас.

/**
 * @var \Tx_newExt_Domain_Repository_myRepository
 * @inject
 */
protected $myRepository;
person Daniel    schedule 09.04.2015
comment
Где я должен это отдать ?? - person Vishnu Prasad; 10.04.2015
comment
в вашем контроллере. Добавьте @inject к своему свойству и удалите строку с makeInstance. Очистите кеш, и все заработает. - person Daniel; 10.04.2015
comment
Теперь столкнулся с другой проблемой. Аргумент 1, переданный в TYPO3 \\ CMS \\ Fluid \\ ViewHelpers \\ Widget \\ PaginateViewHelper :: render (), должен реализовывать интерфейс TYPO3 \ CMS \ Extbase \ Persistence \ QueryResultInterface, массив, указанный в / var / www / dev / ti-typo3 / typo3 / sysext / fluid / Classes / ViewHelpers / Widget / PaginateView‌ Helper.php в строке 67. Можете ли вы помочь мне в этом? - person Vishnu Prasad; 10.04.2015