nstcactus/craft-contact-form-settings-module
Composer 安装命令:
composer require nstcactus/craft-contact-form-settings-module
包简介
A Craft module to manage multiple contact forms using the contact-form & contact-form-extensions plugins
README 文档
README
This module helps to manage multiple sets of settings form the Craft contact-form & contact-form-extensions plugins.
Requirements
This module requires:
- PHP 7.1 or later
- Craft CMS 3, 4 or 5
- contact-form plugin 2.2 or later
- [optional] contact-form-extensions plugin 1.2.1 or later
Installation
-
Install the composer module :
composer require nstcactus/craft-contact-form-settings-module -
Add the contents of the
app.phpfile to yourconfig/app.php(or just copy it there if it does not exist). This ensures that your module will get loaded for each request.The file might look something like this:
return [ 'modules' => [ 'contact-form-settings-module' => [ 'class' => \nstcactus\craftcms\modules\contactFormSettings\ContactFormSettingsModule::class, 'components' => [ // More on this below ], ], ], 'bootstrap' => ['contact-form-settings-module'], ];
Add a form
-
Create a form class that extends
\modules\contactFormSettings\forms\AbstractContactForm. This class will describe the settings of your form. -
Register this form class in the
config/app.phpfile: add an entry in thecomponentsarray of the module where the key is the form name and the value is a reference to the form class.Example:
return [ 'modules' => [ 'contact-form-settings-module' => [ 'class' => \nstcactus\craftcms\modules\contactFormSettings\ContactFormSettingsModule::class, 'components' => [ 'contact' => \project\modules\app\forms\ContactForm::class, ], ], ], 'bootstrap' => ['contact-form-settings-module'], ];
-
Add the following in the template of the form, inside the
<form>element:{{ formNameInput('contact') }}
Form settings
Plugin settings override
Each form setting class must implement the getContactFormConfiguration() & getContactFormExtensionsConfiguration()
methods. They expect a return value that is a settings array, just like what would be set in the
config/contact-form.php & contact-form-extensions.php.
Custom validation
Custom validation rules should be defined by overriding the afterValidateSubmission() method. Here you can add
validation errors on the Submission instance (available in $e->sender) like so:
public function afterValidateSubmission(Event $e): void { /** @var Submission $submission */ $submission = $e->sender; if (empty($submission->message['FirstName'])) { $submission->addError('message.FirstName', Craft::t('site', 'This field cannot be blank.')); } }
FAQ
How do I safely let the use pick from a list of subjects?
When the subject is selected by the user in a <select> element for example, the recommended approach is
How do I set the recipient dynamically?
To set the recipient dynamically, you can either:
-
set it in the
toEmailproperty in the array return from thegetContactFormSetting()method -
set it using the
contact-form-extensionsoverride mechanism in either thebeforeValidateSubmission()or theafterValidateSubmission()method. Example:public function beforeValidateSubmission(ModelEvent $e): void { parent::beforeValidateSubmission($e); $submission = $e->sender->message['toEmail'] = Craft::$app->getSecurity()->hashData($subject->contactSubjectRecipient); }
How do I use separate fields for first name & last name?
When using separate first & last name field as opposed to a single fromName field, make sure to actually set the
fromName property of the Submission instance in the afterValidateSubmission() method.
This will improve submission index in the control panel.
Example:
public function afterValidateSubmission(Event $e): void { /** @var Submission $submission */ $submission = $e->sender; if (!empty($submission->message['FirstName']) || empty($submission->message['LastName'])) { $submission->fromName = trim(sprintf( '%s %s', $submission->message['FirstName'] ?? '', $submission->message['LastName'] ?? '' )); } }
nstcactus/craft-contact-form-settings-module 适用场景与选型建议
nstcactus/craft-contact-form-settings-module 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 568 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 01 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 nstcactus/craft-contact-form-settings-module 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 nstcactus/craft-contact-form-settings-module 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 568
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-01-10