Convert::toObjectStorage()
\nn\t3::Convert()->toObjectStorage($obj = NULL, $childType = NULL);
Converts something into an ObjectStorage
\nn\t3::Convert($something)->toObjectStorage()
\nn\t3::Convert($something)->toObjectStorage( \My\Child\Type::class )
\nn\t3::Convert()->toObjectStorage([['uid'=>1], ['uid'=>2], ...], \My\Child\Type::class )
\nn\t3::Convert()->toObjectStorage([1, 2, ...], \My\Child\Type::class )
Copied!
| @return ObjectStorage
Source Code
public function toObjectStorage( $obj = null, $childType = null ) {
$childType = $this->initialArgument !== null ? $obj : $childType;
$persistenceManager = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class);
$obj = $this->initialArgument !== null ? $this->initialArgument : $obj;
$objectStorage = GeneralUtility::makeInstance( ObjectStorage::class );
if ($childRepository = ($childType ? \nn\t3::Db()->getRepositoryForModel($childType) : false)) {
\nn\t3::Db()->ignoreEnableFields($childRepository);
}
if (is_a($obj, QueryResultInterface::class) || is_array($obj)) {
foreach($obj as $item) {
if (!$childType || is_a($item, $childType)) {
$objectStorage->attach( $item );
} else {
$uid = is_numeric($item) ? $item : \nn\t3::Obj()->get($item, 'uid');
if ($uid) {
if ($childType == \Nng\Nnhelpers\Domain\Model\FileReference::class) {
$childType = \TYPO3\CMS\Extbase\Domain\Model\FileReference::class;
}
// @returns \TYPO3\CMS\Extbase\Domain\Model\FileReference
$child = $persistenceManager->getObjectByIdentifier($uid, $childType, false);
$objectStorage->attach( $child );
} else {
$child = GeneralUtility::makeInstance( $childType );
$objectStorage->attach( $child );
}
}
}
}
return $objectStorage;
}
Copied!