首页 > 解决方案 > 如何获取不同存储库的图像?[错字3]

问题描述

我已经对“导入”记录以及不同插件/扩展的数据有疑问。我在添加 pid 并实现了一个查询构建器来获取不同插件(或本例中的表)的数据后让它工作。但是现在我遇到了一个问题,即“外国”表/记录的图像或任何不包括在内的图像..当我调试 var 时,图像仅设置为 int 1。但它们没有被正确包含。我需要做什么才能让这个 s*** 工作?:)

//我的控制器

<?php
namespace Formschoen\Mitarbeiterajax\Controller;

use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Utility\GeneralUtility;

/**
 * MitarbeiterController
 */
class MitarbeiterController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{

    /**
     * mitarbeiterRepository
     * 
     * @var \Formschoen\Mitarbeiterajax\Domain\Repository\MitarbeiterRepository
     */
    protected $mitarbeiterRepository = null;

    /**
     * @param \Formschoen\Mitarbeiterajax\Domain\Repository\MitarbeiterRepository $mitarbeiterRepository
     */
    public function injectMitarbeiterRepository(\Formschoen\Mitarbeiterajax\Domain\Repository\MitarbeiterRepository $mitarbeiterRepository)
    {
        $this->mitarbeiterRepository = $mitarbeiterRepository;
    }
    
    /**
     * optionRecordRepository
     * 
     * @var \Sebkln\Ajaxselectlist\Domain\Repository\OptionRecordRepository
     */
    protected $optionRecordRepository;

    /**
     * @param \Sebkln\Ajaxselectlist\Domain\Repository\OptionRecordRepository
     */
    public function injectOptionRecordRepository(\Sebkln\Ajaxselectlist\Domain\Repository\OptionRecordRepository $optionRecordRepository) {
        $this->optionRecordRepository = $optionRecordRepository;
    }
    
    /**
     * action list
     * 
     * @return void
     */
    public function listAction()
    {
        $mitarbeiters = $this->mitarbeiterRepository->findAll();
        $this->view->assign('mitarbeiters', $mitarbeiters);
        $this->view->assign("currentPageID", $GLOBALS['TSFE']->id);

        $options['autohaus'] = array(
            1 => 'some strings'
        );
        $options['abteilung'] = array(
            1 => 'some strings'
        );
        $this->view->assign('options', $options);
    }

    /**
     * action callAjax
     * 
     * @param \Formschoen\Mitarbeiterajax\Domain\Model\Mitarbeiter $mitarbeiter
     * @return void
     */
    public function callAjaxAction(\Formschoen\Mitarbeiterajax\Domain\Model\Mitarbeiter $mitarbeiter)
    {
        $optionRecords = $this->optionRecordRepository->findAll();
        $arguments = $this->request->getArguments();
        $selectedAutohaus = $arguments['autohaus'];
        $selectedAbteilung = $arguments['abteilung'];
        if ($selectedAbteilung == null && $selectedAutohaus == null) {
            echo("Bitte ein Autohaus auswählen / eine Abteilung.");
        } else if ($selectedAbteilung == null) {
            $autohausResult = $this->mitarbeiterRepository->findAutohaus($selectedAutohaus);
            $this->view->assign('autohausResult', $autohausResult);
        } else {
            $mitarbeiterResult = $this->mitarbeiterRepository->findByFilter($selectedAutohaus, $selectedAbteilung);
            $this->view->assign('mitarbeiterResult', $mitarbeiterResult);
        }
        $this->contentObj = $this->configurationManager->getContentObject();
        $images=$this->getFileReferences($this->contentObj->data['uid']);
        $this->view->assign('images', $images);
    }
}

//我的仓库

<?php
namespace Formschoen\Mitarbeiterajax\Domain\Repository;

/**
 * The repository for Mitarbeiters
 */
class MitarbeiterRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
    /**
     * @param $selectedAutohaus
     * @param $selectedAbteilung
     */
    public function findByFilter($selectedAutohaus,$selectedAbteilung){
        $query = $this->createQuery();
        $result = $query->matching($query->logicalAnd(
            $query->equals('autohausName', $selectedAutohaus),
            $query->equals('abteilung', $selectedAbteilung)
        ))
        ->execute();
        return $result;
    }
    /**
     * @param $uid
     */
    public function findAutohaus($uid)
    {
        $queryBuilder = $this->objectManager->get(\TYPO3\CMS\Core\Database\ConnectionPool::class)
            ->getConnectionForTable('tx_ajaxselectlist_domain_model_optionrecord')->createQueryBuilder();
        $queryBuilder
            ->select('*')
            ->from('tx_ajaxselectlist_domain_model_optionrecord')
            ->where(
                $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid))
            );
        $result = $queryBuilder->execute()->fetchAll();
        if ($returnRawQueryResult) {
            $dataMapper = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::class);
            return $dataMapper->map($this->objectType, $result);
        }
        return $result;
    }
}

标签: phptypo3content-management-systemtypo3-9.xtypo3-extensions

解决方案


你为什么不直接替换这个

$autohausResult = $this->mitarbeiterRepository->findAutohaus($selectedAutohaus);

有了这个

$autohausResult = $this->optionRecordRepository->findByUid($selectedAutohaus);

这样 TYPO3 将构建模型,您将获得所需的图像


推荐阅读