错别字3 8.7 / 扩展基"No Properties to be mapped"



我有一个名为"Mail"的普通模型:

Namespace ...
use TYPO3CMSExtbaseDomainObjectAbstractEntity;
class Mail extends AbstractEntity
{
    /**
     * @var string
     */
    protected $name;
    protected $company;
.../**
     * @var string
     */
    protected $company;
...

我想在表单中使用它:

<f:form action="post" object="{mail}">
    <f:form.textfield property="name"/>
    ...
</f:form>

第一个奇怪的事情是,viewhelper生成的html是:

<input name="tx_myext_offer[name]">

但是为了工作,它应该是:

 <input name="tx_myext_offer[mail][name]">

所以我尝试使用名称属性手动编写输入字段的 html,例如"tx_myext_offer[邮件][名称]"。当我现在将表单发送到控制器时,出现错误:

#1297759968: Exception while property mapping at property path "": It is not allowed to map property "name". You need to use $propertyMappingConfiguration->allowProperties('name') to enable mapping of this property. 

当我调试请求的 PropertyMappingConfiguration 对象时,我看到"propertiesNotToBeMapped"属性为空。应该有邮件模型的属性。

不知何故,extbase 这次不会自动映射它。似乎我在某处错过了一些东西。如何告诉extbase自动映射模型的属性?

@ThomasLöffler

在调用表单的控制器 Action 中,没有任何令人兴奋的事情发生:

公共函数显示操作(({

$this->view->assignMultiple(
    [
        'mail' => $this->objectManager->get(Mail::class)
    ]
);

}

第一件事。您错过了<f:form />标记中的属性objectName="mail"

当您添加此属性时,隐藏字段tx_myext_offer[__trustedProperties]和其他一堆字段将发生变化,然后您的自动属性映射应该可以工作。

相关内容

最新更新