编辑前端中的隐藏记录

时间:2016-10-13 09:51:38

标签: typo3

我正在构建一个扩展来编辑前端的tt_news记录。 我在我的存储库中设置了setIgnoreEnableFields(TRUE)。 但是,如果我尝试编辑隐藏的记录,我会收到错误

  

具有身份的对象“12345"没找到。

对此有何解决方案?

2 个答案:

答案 0 :(得分:2)

猜测你正在使用像

这样的动作
Repository

您的问题是/** * Single view of a news record * * @param \Vendor\Ext\Domain\Model\News $news news item */ public function detailAction() { $id = (int)$this->request->getArgument('news'); if ($id) { $news = $this->newsRepository->findByUid($previewNewsId); } } 用于获取记录。

作为解决方案,删除参数,清除缓存并尝试类似的东西

QuerySettings

现在您可以操纵#!/usr/bin/env python3 import minieigen as eigen M = eigen.Matrix3(1, 0, 0, 0, 2, 0, 0, 0, 3) print(M.spectralDecomposition()) 并使用它们。

答案 1 :(得分:1)

问题是PropertyMapping。如果extbase尝试将uid(12345)分配给域对象(tt_news),则不会遵循存储库的“setEnableFields”设置。所以你必须自己拿取对象。

简单的解决方案是在每个“show”操作的initialize * Action中执行此操作。对于editAction示例:

public function initializeEditAction() {
  if ($this->request->hasArgument('news')) {
    $newsUid = $this->request->getArgument('news');

    if (!$this->newsRepository->findByUid($newsUid)) {
      $defaultQuerySettings = $this->newsRepository->createQuery()->getQuerySettings();
      $defaultQuerySettings->setIgnoreEnableFields(TRUE);
      $this->newsRepository->setDefaultQuerySettings($defaultQuerySettings);

      if ($news = $this->newsRepository->findByUid($newsUid)) {
        $this->request->setArgument('news', $news);
      }
    }
  }
}

硬件是让对象更新。由于我从未尝试过,我找到了一个TypeConverter来获取https://gist.github.com/helhum/58a406fbb846b56a8b50

处隐藏的记录

也许相反,要为所有内容注册TypeConverter(例如ext_localconf.php中的示例),您可以尝试仅在initializeUpdateAction

中分配它
public function initializeUpdateAction() {
  if ($this->arguments->hasArgument('news')) {
    $this->arguments->getArgument('news')->getPropertyMappingConfiguration()
      ->setTypeConverter('MyVendor\\MyExtension\\Property\\TypeConverters\\MyPersistenObjectConverter')
  }
}