fruitware / contact-bundle
Symfony2 的联系表单实现
Requires
- php: >=5.3.3
- genemu/form-bundle: 2.1.*
- symfony/form: ~2.1
- symfony/framework-bundle: ~2.1
This package is auto-updated.
Last update: 2024-09-04 02:14:42 UTC
README
此组件为 Symfony2 提供了一个联系表单。
许可证
此组件可在 MIT 许可证 下使用。
先决条件
此版本的组件需要 Symfony 2.3+。
翻译
如果您想使用此组件中提供的默认文本,请确保您已启用配置中的翻译器。
# app/config/config.yml framework: translator: ~
有关翻译的更多信息,请参阅 Symfony 文档。
安装
安装是一个快速 6 步的过程
- 使用 composer 下载 MremiContactBundle
- 启用组件
- 创建您的 Contact 类(可选)
- 配置 MremiContactBundle
- 导入 MremiContactBundle 路由
- 更新您的数据库模式(可选)
步骤 1:使用 composer 下载 MremiContactBundle
在您的 composer.json 中添加 MremiContactBundle
{ "require": { "mremi/contact-bundle": "dev-master" } }
现在运行命令让 composer 下载组件
$ php composer.phar update mremi/contact-bundle
Composer 将组件安装到项目的 vendor/mremi
目录。
步骤 2:启用组件
在 kernel 中启用组件
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Mremi\ContactBundle\MremiContactBundle(), ); }
步骤 3:创建您的 Contact 类(可选)
此组件的目标不是将某个 Contact
类持久化到数据库中,但您可以通过将 store_data
参数设置为 true
(默认为 false
)来实现。如果您不需要这样做,您可以跳到下一步。
您的首要任务是创建应用程序的 Contact
类。这个类可以看起来和表现成您想要的任何样子:添加任何您认为有用的属性或方法。这是 您的 Contact
类。
组件提供了基类,这些类已经为大多数字段进行了映射,以便更容易创建实体。以下是使用方法
- 从
Entity
文件夹扩展基Contact
类 - 映射
id
字段。它必须被保护,因为它是从父类继承的。
注意
目前,此组件仅处理 Doctrine ORM(任何 PR 都会受到欢迎 :))。
<?php // src/Acme/ContactBundle/Entity/Contact.php namespace Acme\ContactBundle\Entity; use Mremi\ContactBundle\Entity\Contact as BaseContact; class Contact extends BaseContact { /** * @var integer */ protected $id; }
<!-- src/Acme/ContactBundle/Resources/config/doctrine/Contact.orm.xml --> <?xml version="1.0" encoding="UTF-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="Acme\ContactBundle\Entity\Contact" table="contact"> <id name="id" column="id" type="integer"> <generator strategy="AUTO" /> </id> </entity> </doctrine-mapping>
步骤 4:配置 MremiContactBundle
组件自带了一个合理的默认配置,如下所示。但是,您至少需要配置一个收件人地址。
# app/config/config.yml mremi_contact: store_data: false contact_class: Mremi\ContactBundle\Model\Contact form: type: mremi_contact name: contact_form validation_groups: [Default] subject_provider: mremi_contact.subject_provider.noop email: mailer: mremi_contact.mailer.twig_swift recipient_address: # Required template: MremiContactBundle:Contact:email.txt.twig
您还可以配置您喜欢的 captcha。您必须自行安装并在此处配置它。您可以从这些组件中获取一个:
或者甚至实现您自己的。
# app/config/config.yml mremi_contact: form: captcha_type: genemu_captcha # or any other (genemu_recaptcha, ewz_recaptcha, ...)
步骤 5:导入 MremiContactBundle 路由
现在您已激活并配置了组件,剩下的只是导入 MremiContactBundle 路由文件。
通过导入路由文件,您将能够轻松访问联系表单。
在 YAML 中
# app/config/routing.yml mremi_contact_form: resource: "@MremiContactBundle/Resources/config/routing.xml"
或者如果您更喜欢 XML
<!-- app/config/routing.xml --> <import resource="@MremiContactBundle/Resources/config/routing.xml"/>
注意
为了使用内置的电子邮件功能,您必须激活并配置 SwiftmailerBundle。
步骤 6:更新您的数据库模式(可选)
如果您已配置数据存储(步骤 3),现在您可以更新数据库模式。
如果您想首先查看创建表的查询
$ app/console doctrine:schema:update --dump-sql
然后您可以运行它
$ app/console doctrine:schema:update --force
现在您可以通过 http://example.com/app_dev.php/contact
访问联系表单!
注意
如果您处于调试模式(请参阅您的前端控制器),可以通过在 URL 中添加
?novalidate=1
来禁用 HTML5 验证。
Bootstrap
Bootstrap框架 v3.0.2 已加载并用于本扩展包提供的模板中。
定制化
模板化
如果您想定制此扩展包的部分功能(例如视图),请阅读Symfony文档。
事件
在index动作中,联系控制器会触发3个事件
- 当表单初始化时发生ContactEvents::FORM_INITIALIZE
- 当表单成功提交时发生ContactEvents::FORM_SUCCESS
- 在联系表单处理过程中保存联系信息后发生ContactEvents::FORM_COMPLETED
每个事件都允许您定制本扩展包提供的默认工作流程。
贡献
有任何疑问或反馈?请提交一个问题,我会尽快回复。
这里缺少功能吗?请随意创建一个pull request来解决它!
希望这对你有所帮助,如果这样的话,请分享并推荐它! :)