Neos.Form.Builder: 设置回复地址为用户填写联系表时输入的邮箱
Neos.Form.Builder: Setting the reply-to address to an email entered by the user filling in the contact form
我正在尝试将 EmailFinisher 发送的电子邮件的回复电子邮件地址设置为填写联系表的网站访问者输入的电子邮件。
我尝试了以下方法,通过 https://github.com/neos/form-builder#custom-form-elements 的自述文件,根据我的需要进行调整。
A php class 新终结者看起来像这样(初稿):
<?php
namespace Vendor\Site\Form\Finisher;
use Neos\Flow\Annotations as Flow;
use Neos\Form\Exception\FinisherException;
use Neos\Form\Finishers\EmailFinisher;
class EmailWithDynamicReplytoFinisher extends EmailFinisher
{
/**
* Executes this finisher
* Sends a mail with the reply-to address set to the address supplied by the customer who filled the form
*
* @return void
* @throws FinisherException
* @see AbstractFinisher::execute()
*
*/
protected function executeInternal()
{
$this->options['replyToAddress'] = 'test@foo.bar';
parent::executeInternal();
}
}
然后我像这样覆盖了原始包的EmailFinisher:
'Neos.Form.Builder:EmailFinisher':
options:
form:
formElementType: 'Vendor.Site:EmailWithDynamicReplytoFinisher'
更改在渲染中断时生效。它说:The finisher preset identified by "Vendor.Site:EmailWithDynamicReplytoFinisher" could not be found, or the implementationClassName was not specified.
如果我尝试通过融合覆盖它,会发生同样的效果:
prototype(Neos.Form.Builder:EmailFinisher.Definition) {
formElementType = 'Vendor.Site:EmailWithDynamicReplytoFinisher'
}
我认为这个配置会告诉 Neos 在哪里寻找 finisher 实现,但它似乎根本没有改变(注意:我的包依赖于 neos/form-builder,所以我认为加载顺序应该在这里不是问题):
Neos:
Form:
presets:
fusion:
finisherPresets:
'Vendor.Site:EmailWithDynamicReplytoFinisher':
implementationClassName: Vendor\Site\Form\Finisher\EmailWithDynamicReplytoFinisher
options: { }
我错过了什么?如何让Neos找到实现并实际使用?
The finisher preset identified by "Oekokiste.Core:EmailWithDynamicReplytoFinisher" could not be found
您在 fusion
预设中定义了此修整器。你也用它来渲染表单吗?
好的,所以我终于找到了一个简单的解决方案来解决我原来的问题,它甚至不需要自定义 EmailFinisher。
所有表单元素都有一个名为identifier
的属性,可以用作占位符。只需将其从 neos 后端(在检查器中)放入 emailfinisher 的 reply-to
属性,它就会自动用作回复的内容。
像这样:{identifier}
。因此,在我的例子中,我选择 email
作为表单中电子邮件地址输入字段的 ID,因此我需要将 {email}
放入回复 属性.
我正在尝试将 EmailFinisher 发送的电子邮件的回复电子邮件地址设置为填写联系表的网站访问者输入的电子邮件。
我尝试了以下方法,通过 https://github.com/neos/form-builder#custom-form-elements 的自述文件,根据我的需要进行调整。
A php class 新终结者看起来像这样(初稿):
<?php
namespace Vendor\Site\Form\Finisher;
use Neos\Flow\Annotations as Flow;
use Neos\Form\Exception\FinisherException;
use Neos\Form\Finishers\EmailFinisher;
class EmailWithDynamicReplytoFinisher extends EmailFinisher
{
/**
* Executes this finisher
* Sends a mail with the reply-to address set to the address supplied by the customer who filled the form
*
* @return void
* @throws FinisherException
* @see AbstractFinisher::execute()
*
*/
protected function executeInternal()
{
$this->options['replyToAddress'] = 'test@foo.bar';
parent::executeInternal();
}
}
然后我像这样覆盖了原始包的EmailFinisher:
'Neos.Form.Builder:EmailFinisher':
options:
form:
formElementType: 'Vendor.Site:EmailWithDynamicReplytoFinisher'
更改在渲染中断时生效。它说:The finisher preset identified by "Vendor.Site:EmailWithDynamicReplytoFinisher" could not be found, or the implementationClassName was not specified.
如果我尝试通过融合覆盖它,会发生同样的效果:
prototype(Neos.Form.Builder:EmailFinisher.Definition) {
formElementType = 'Vendor.Site:EmailWithDynamicReplytoFinisher'
}
我认为这个配置会告诉 Neos 在哪里寻找 finisher 实现,但它似乎根本没有改变(注意:我的包依赖于 neos/form-builder,所以我认为加载顺序应该在这里不是问题):
Neos:
Form:
presets:
fusion:
finisherPresets:
'Vendor.Site:EmailWithDynamicReplytoFinisher':
implementationClassName: Vendor\Site\Form\Finisher\EmailWithDynamicReplytoFinisher
options: { }
我错过了什么?如何让Neos找到实现并实际使用?
The finisher preset identified by "Oekokiste.Core:EmailWithDynamicReplytoFinisher" could not be found
您在 fusion
预设中定义了此修整器。你也用它来渲染表单吗?
好的,所以我终于找到了一个简单的解决方案来解决我原来的问题,它甚至不需要自定义 EmailFinisher。
所有表单元素都有一个名为identifier
的属性,可以用作占位符。只需将其从 neos 后端(在检查器中)放入 emailfinisher 的 reply-to
属性,它就会自动用作回复的内容。
像这样:{identifier}
。因此,在我的例子中,我选择 email
作为表单中电子邮件地址输入字段的 ID,因此我需要将 {email}
放入回复 属性.