Typo3 联系表

问题描述 投票:0回答:1

我需要帮助,希望我来对地方了。 在 TYPO3 中,我有一个在我的网站上用于联系人的联系表单,网站用户可以通过填写电子邮件地址、名字、姓氏、消息字段来发送查询,并且可以上传文件。我还在其他页面上使用相同的表格,在其中显示空缺职位,潜在候选人可以通过这些页面留下他们的详细信息并申请工作。填写数据后,系统会向我选择和设置的电子邮件地址发送一封电子邮件,并且该数据以特定格式发送到电子邮件中,例如: 名字和姓氏:来自字段的数据 电子邮件:[电子邮件受保护] 消息:一些消息 文件:cv.pdf

我想在表单中有一个隐藏字段,并且根据用户所在的页面,该字段将填充最后一个“/”之后的链接部分,因为链接的该部分指示了该链接的位置用户想要申请,并且我希望此信息也到达指定的电子邮件地址。因此,除了确认表单时发送的数据外,数据还包括: 候选人申请的职位:现场数据

假设联系链接如下所示:https://myfirm.com/contact, 我不希望在那里填写隐藏字段,但我需要此字段的所有其他页面都位于链接中:https://myfirm.com/jobs/junior-developer https://myfirm.com/jobs/chef

我已经在表单中添加了一个隐藏字段,但我不知道在哪里可以添加 JavaScript 代码(我已经编写了),该代码将从链接中提取职位名称,以及如何设置它以便名称和该字段的内容将发送到电子邮件。感谢您的帮助。

我尝试在 yaml 文件中添加隐藏字段并成功,但我不知道在哪里添加 JavaScript 代码,因为页面是动态创建的,这是我第一次遇到 TYPO3。我没有像我在使用 Angular/React 和 Java Spring 的项目中那样拥有经典的 HTML 页面和 JS 文件,在这些项目中我知道如何设置一切...

typo3 typoscript contact-form hidden-field typo3-extensions
1个回答
0
投票

如果你真的想使用javascript方式来操作你的表单,那么最好的方法是覆盖tx_form的Render.html模板。

为此,您必须添加打字稿设置以及自定义模板的路径,如下所示:

plugin.tx_form {
    view {
        templateRootPaths {
            10 = EXT:your_extension/Resources/Private/Templates/
        }
    }
}

然后您必须将模板 Render.html 从 ext:form 复制到您的自定义模板路径:

your_extension/Resources/Private/Templates/

更新TYPO3后请注意检查原始模板。因为您现在对使用 ext:form 创建的所有表单使用自定义渲染模板。

在 Render.html 模板中,您现在可以将 js 包含在

f:asset
viewhelper 中,如下所示:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" 
    xmlns:formvh="http://typo3.org/ns/TYPO3/CMS/Form/ViewHelpers"
    data-namespace-typo3-fluid="true">

<f:if condition="{formConfiguration}">
    <formvh:render overrideConfiguration="{formConfiguration}" />
    <f:flashMessages />

    <f:asset.script identifier="my-custom-script" 
        src="EXT:your_extension/Resources/Public/JavaScript/my-custom-script.js" />

</f:if>
</html>

JavaScript 现已添加到所有表单中。我建议您还实现一个检查

{formConfiguration}
变量的条件。然后只将 javascript 添加到您的特殊表单中。
您可以使用以下方式调试变量:
<f:debug>{formConfiguration}</f:debug>

或使用以下命令调试模板中的所有变量:
<f:debug>{_all}</f:debug>

但请注意,此解决方案仅适用于激活了 javascript 的页面。如果你不打扰那也没关系。但也许有更好的解决方案,通过使用 ext:form 附带的钩子或为您的表单构建自定义表单工厂。

我会尝试formfactory。为此,您还必须覆盖 Render.html 模板。检查

{formConfiguration}
变量。然后按照此处所述调用 formvh viewhelper:
https://docs.typo3.org/c/typo3/cms-form/main/en-us/D/FrontendRendering/Index.html#build-forms-programmatically

© www.soinside.com 2019 - 2024. All rights reserved.