我如何在 TYPO3 中获取文件引用对象的 uid?
How do I get uid of a File Reference Object in TYPO3?
我试图通过此代码获取文件 $f = $resourceFactory->getFileObject($uid);
但问题是 uid
是文件引用对象中的受保护字段,如下所示,所以我无法获取uid
和 getUid()
显然也不起作用。
那么我怎样才能得到文件引用的uid (FAL)
/**
* A file reference object (File Abstraction Layer)
*
* @api experimental! This class is experimental and subject to change!
*/
class FileReference extends
\TYPO3\CMS\Extbase\Domain\Model\AbstractFileFolder
{
/**
* Uid of the referenced sys_file. Needed for extbase to serialize the
* reference correctly.
*
* @var int
*/
protected $uidLocal;
/**
* @param \TYPO3\CMS\Core\Resource\ResourceInterface $originalResource
*/
public function setOriginalResource(\TYPO3\CMS\Core\Resource\ResourceInterface $originalResource)
{
$this->originalResource = $originalResource;
$this->uidLocal = (int)$originalResource->getOriginalFile()->getUid();
}
/**
* @return \TYPO3\CMS\Core\Resource\FileReference
*/
public function getOriginalResource()
{
if ($this->originalResource === null) {
$this->originalResource = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject($this->getUid());
}
return $this->originalResource;
}
}
如果你有一个 TYPO3\CMS\Extbase\Domain\Model\FileReference
的实例,那么你可以使用 getOriginalResource()
来获取包装的 TYPO3\CMS\Core\Resource\FileReference
。如果您需要引用的文件,则可以使用 getOriginalFile()
。因此作为链式调用:
$file = $fileReference->getOriginalResource()->getOriginalFile();
请注意,您不必在所有这些操作中使用 ResourceFactory
自己,这是内部处理的。
找我工作。
您可以使用自定义查询查找或获取文件引用 uid。
在控制器中:
$uid = $yourObject->getUid();
$fileReference = $this->yourRepository->getFileReferenceObject($uid);
在存储库中
public function getFileRefernceHeaderLogo($uid){
$query = $this->createQuery();
$queryString = "SELECT *
FROM sys_file_reference
WHERE deleted = 0
AND hidden = 0
AND tablenames='your_table_name'
AND fieldname='your_field_name'
AND uid_foreign =".$uid;
$query->statement($queryString);
return $res = $query->execute(true);
}
在控制器中
$fileRefUid = $fileReference[0]['uid'];
在这里你可以获得文件引用的uid table.It是一个漫长的过程。
您还可以获得 sys_file table uid for getFileObject.like,
$sys_file_uid = $fileReference[0]['uid_local'];
我试图通过此代码获取文件 $f = $resourceFactory->getFileObject($uid);
但问题是 uid
是文件引用对象中的受保护字段,如下所示,所以我无法获取uid
和 getUid()
显然也不起作用。
那么我怎样才能得到文件引用的uid (FAL)
/**
* A file reference object (File Abstraction Layer)
*
* @api experimental! This class is experimental and subject to change!
*/
class FileReference extends
\TYPO3\CMS\Extbase\Domain\Model\AbstractFileFolder
{
/**
* Uid of the referenced sys_file. Needed for extbase to serialize the
* reference correctly.
*
* @var int
*/
protected $uidLocal;
/**
* @param \TYPO3\CMS\Core\Resource\ResourceInterface $originalResource
*/
public function setOriginalResource(\TYPO3\CMS\Core\Resource\ResourceInterface $originalResource)
{
$this->originalResource = $originalResource;
$this->uidLocal = (int)$originalResource->getOriginalFile()->getUid();
}
/**
* @return \TYPO3\CMS\Core\Resource\FileReference
*/
public function getOriginalResource()
{
if ($this->originalResource === null) {
$this->originalResource = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject($this->getUid());
}
return $this->originalResource;
}
}
如果你有一个 TYPO3\CMS\Extbase\Domain\Model\FileReference
的实例,那么你可以使用 getOriginalResource()
来获取包装的 TYPO3\CMS\Core\Resource\FileReference
。如果您需要引用的文件,则可以使用 getOriginalFile()
。因此作为链式调用:
$file = $fileReference->getOriginalResource()->getOriginalFile();
请注意,您不必在所有这些操作中使用 ResourceFactory
自己,这是内部处理的。
找我工作。
您可以使用自定义查询查找或获取文件引用 uid。
在控制器中:
$uid = $yourObject->getUid();
$fileReference = $this->yourRepository->getFileReferenceObject($uid);
在存储库中
public function getFileRefernceHeaderLogo($uid){
$query = $this->createQuery();
$queryString = "SELECT *
FROM sys_file_reference
WHERE deleted = 0
AND hidden = 0
AND tablenames='your_table_name'
AND fieldname='your_field_name'
AND uid_foreign =".$uid;
$query->statement($queryString);
return $res = $query->execute(true);
}
在控制器中
$fileRefUid = $fileReference[0]['uid'];
在这里你可以获得文件引用的uid table.It是一个漫长的过程。
您还可以获得 sys_file table uid for getFileObject.like,
$sys_file_uid = $fileReference[0]['uid_local'];