我想为创建表单构建一个预览页面。我将记录的“已删除”属性设置为“1”,previewAction因为在 BE 中,列表模块用于批准插入的记录 - 因此,如果记录从未最终保存,则无论如何都将其删除。
问题:我可以创建记录 ( deleted=1) - 我可以跳回表单(没有历史记录,因为我必须保留创建的对象)。但是如果我再次提交属性映射告诉我
未找到身份为“3”的 MyModel 类型对象。
那当然是因为它被删除了。存储库中要忽略已删除的设置在此处不执行操作。
是的,我可以通过手动填充所有内容来绕过 Extbase 魔法,但这不是我想要的。
这是了解我正在尝试的操作的操作
/**
* action preview
*
* @param MyModel
* @return void
*/
public function previewAction(MyModel $newModel)
{
//check if model was already saved
$uid = $this->request->hasArgument('uid') ? this->request->getArgument('uid') : 0;
if($uid){
$newModel = $this->myRepository->findDeletedByUid($uid);
$this->myRepository->update($newModel);
}
else{
$newModel->setDeleted(true);
$this->myRepository->add($newModel);
}
$this->view->assign('ad', $newModel);
$this->persistenceManager->persistAll();
$uid = $this->persistenceManager->getIdentifierByObject($newModel);
$this->view->assign('uid', $uid);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在我的扩展中,我阅读了文件夹和图像.但是在结果中总是缺少来自sys_file_metadata的元数据,我什么也没发现如何加载它.
数据库条目在那里,所以文件被索引,一切似乎都没问题.BE工作正常.
这里有一些代码:
控制器操作:
$storageId = 1;
$storageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository');
$storage = $storageRepository->findByUid($storageId);
$singleFile = $storage->getFile('/user_upload/my_file.pdf');
$singleFile = true;
$this->view->assign('singleFile', $singleFile);
Run Code Online (Sandbox Code Playgroud)
如果我做af:调试它给我看这个:
Extbase Variable Dump
TYPO3\CMS\Core\Resource\Fileprototypeobject
metaDataLoaded => FALSE
metaDataProperties => array(empty)
indexingInProgress => FALSE
updatedProperties => array(empty)
indexerService => NULL
properties => array(15 items)
storage => TYPO3\CMS\Core\Resource\ResourceStorageprototypeobject
identifier => '/user_upload/my_file.pdf' (24 chars)
name => 'my_file.pdf' (11 chars)
deleted => FALSE
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,有一个字段metaDataProperties和metaDataLoaded,所以它没有被加载.
有人知道如何加载它吗?
我可以像这样在TCA中覆盖图像字段的cropVaraints:
'columnsOverrides' => [
'image' => [
'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_be.xlf:general.field.image',
'config' => [
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'LLL:EXT:myext/Resources/Private/Language/locallang_be.xlf:wizard.banner.title',
'allowedAspectRatios' => [
'2:1' => [
'title' => 'LLL:EXT:myext/Resources/Private/Language/locallang_be.xlf:field.banner.image-crop.ratio',
'value' => 2 / 1
],
],
],
],
],
],
],
],
],
],
],
Run Code Online (Sandbox Code Playgroud)
我试图使这种方式灵活化-但没有成功。所以我需要的是这样的东西(但工作:-))
<foreign_selector_fieldTcaOverride type="array">
<config>
<appearance>
<elementBrowserType>file</elementBrowserType>
<elementBrowserAllowed>jpg,png</elementBrowserAllowed>
</appearance>
<overrideChildTca>
<columns>
<crop>
<config>
<cropVariants>
<default>
<title>Blubber</title>
<allowedAspectRatios>
<test>
<title>2:1</title>
<value>2 / 1</value> …Run Code Online (Sandbox Code Playgroud)