【问题标题】:TYPO3: get all FE usersTYPO3:获取所有 FE 用户
【发布时间】:2017-01-24 16:29:24
【问题描述】:

我正在尝试创建一个用户管理模块。我想获取所有 FE 用户。

这是我的控制器:

/**
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
 * @inject
 */
protected $feUserRepository;

然后我使用:

$users = $this->feUserRepository->findAll();

$this->view->assign('users', $users);

但我得到的只是一个空对象。

编辑:

出于某种原因

$this->feUserRepository->findByUId(1);

确实有效,但 findAll() 不...

【问题讨论】:

    标签: typo3 typoscript extbase


    【解决方案1】:

    这是因为 extbase 会静默禁用 findByUid($uid) 调用的 querySettings 上的 respectStoragePage 设置。

    所以,你有两个选择:

    1. 在插件的 TypoScript 配置中提供正确的存储 pid (plugin.tx_myextension.persistence.storagePid)。这样,您将找到存储在给定页面上的每个前端用户。
    2. 您可以实现自己的 FrontendUserRepository,它从 extbase 扩展存储库,但对所有调用禁用 respectStoragePage(这样无论记录存储在哪个页面上,您都可以获得每个 frontendUser)。以下是你的做法:

      use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository as ExtbaseFrontendUserRepository;
      
      class FrontendUserRepository extends ExtbaseFrontendUserRepository
      {
          /**
           * Disable respecting of a storage pid within queries globally.
           */
          public function initializeObject()
          {
              $defaultQuerySettings = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings:class);
              $defaultQuerySettings->setRespectStoragePage(false);
              $this->setDefaultQuerySettings($defaultQuerySettings);
          }
      }
      

    然后在您的控制器中注入您的FrontendUserRepository。然后你应该对 FrontendUser 模型做同样的事情,然后告诉 extbase 你正在为你的模型使用 fe_users 表:

    config.tx_extbase {
        persistence {
            classes {
                Vendor\MyExtension\Domain\Model\FrontendUser {
                    mapping {
                        tableName = fe_users
                    }
                }
            }
        }
    }
    

    【讨论】:

    • 完美,坦克你!
    • 如果它只是一次性的事情,你可以在“执行”它之后编辑查询,因为在需要数据之前查询不会真正执行,因此这个工作:$users->getQuery()->getQuerySettings()->setRespectStoragePage(false);。您不需要为此扩展存储库,尽管这样做可能更简洁。
    • 我们应该把config 排版放在里面吗?
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    相关资源
    最近更新 更多