我正在构建一个扩展来编辑前端的tt_news记录。
我在我的存储库中设置了setIgnoreEnableFields(TRUE)
。
但是,如果我尝试编辑隐藏的记录,我会收到错误
具有身份的对象“12345"没找到。
对此有何解决方案?
答案 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')
}
}