sys_category 在 powermail 保存数据完成器中

sys_category in a powermail save data finisher

我想在自己的 extbase 扩展的数据 table 中写入 powermail 数据。该表单提供了一个 sys_category 的 uid,我想在我的扩展中保留它。

我整理器中的相关台词:

$obj = GeneralUtility::makeInstance('Vendor\myExt\Domain\Model\ProductRating');
$obj->setName('Huber');
$obj->setPrename('Hans');
// etc.
$this->persistenceManager->add($obj);
$this->persistenceManager->persistAll();

这按预期工作,条目保留在数据中 table。但是现在我想坚持给定的sys_category。这个:

$obj->setCategories(13);  // 13 is the uid of the category

显然不起作用(“预期参数类型为‘\TYPO3\CMS\Extbase\Persistence\ObjectStorage’,提供了 'string')。我需要实现 sys_category 的 ObjectStorage,但我不知道如何实现.

非常感谢每一个提示...!

彼得

您必须创建 ObjectStorage 的新实例(例如 $os = new ObjectStorage();),现在您可以将对象添加到 objectStorage。在此之后,您可以在 setCategories() 函数中使用它。

Alex Kellner 的提示为我指明了方向。 我将详细描述它 - 也许有人会发现它有用:

首先注入类别存储库:

/**
 * @var \TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository
 * @inject
 */
protected $categoryRepository;

然后创建新闻对象存储并附加给定类别:

$newCategories = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage;
$myCategory = $this->categoryRepository->findByUid(85);
$newCategories->attach($myCategory);

当然,类别的 uid 应该来自 powermail 表单...

这行得通。

谢谢亚历克斯!