mremi / contact-bundle
Symfony2的联系方式表实现
Requires
- php: >=5.3.3
- swiftmailer/swiftmailer: ~4.3|~5
- symfony/form: ~2.3
- symfony/framework-bundle: ~2.3
- twig/twig: ~1.20
Requires (Dev)
- fabpot/php-cs-fixer: ~0.1|~1.0
- phpunit/phpunit: ~4.8
- symfony/phpunit-bridge: ~2.7|~3.0
Suggests
- mremi/templating-extra-bundle: In order to profile pages, get some statistics and enhance front office development
README
此捆绑包为Symfony2提供联系表单。
许可证
此捆绑包可在MIT许可证下使用。
先决条件
此版本的捆绑包需要Symfony 2.3+。
翻译
如果您想使用此捆绑包提供的默认文本,请确保您已在您的配置中启用了翻译器。
# app/config/config.yml framework: translator: ~
有关翻译的更多信息,请参阅Symfony文档。
安装
安装是一个快速6步骤的过程
- 使用composer下载MremiContactBundle
- 启用捆绑包
- 创建您的联系类(可选)
- 配置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
类持久化到数据库中,但您可以设置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 int */ 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>
YML版本
# src/Acme/ContactBundle/Resources/config/doctrine/Contact.orm.yml Acme\ContactBundle\Entity\Contact: type: entity table: contact id: id: type: integer generator: strategy: AUTO
注解版本
<?php // src/Acme/ContactBundle/Entity/Contact.php namespace Acme\ContactBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Mremi\ContactBundle\Entity\Contact as BaseContact; /** * @ORM\Entity * @ORM\Table(name="contact") */ class Contact extends BaseContact { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; }
步骤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 from: [] to: [] # Required template: MremiContactBundle:Contact:email.txt.twig
mremi_contact.email.from
允许您设置消息的“发件人”地址
# app/config/config.yml mremi_contact: email: from: - { address: john.doe@example.com, name: "John Doe" } - { address: foo.bar@example.com }
mremi_contact.email.to
允许您设置消息的“收件人”地址
# app/config/config.yml mremi_contact: email: to: - { address: webmaster@example.com, name: "Webmaster" } - { address: moderator@example.com }
您还可以配置您喜欢的验证码。您必须自行安装并在此处配置它。您可以从这些捆绑包之一获取一个
或者甚至实现自己的。
# 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
的联系表单了!
注意
如果您处于调试模式(请查看前端控制器),可以通过将
?novalidate=1
添加到 URL 来禁用 HTML5 验证。
自定义
模板化
如果您想自定义此包的一些部分(例如视图),请阅读 Symfony 文档。
事件
联系控制器在索引操作期间触发 3 个事件
- 当表单初始化时发生 ContactEvents::FORM_INITIALIZE
- 当表单提交成功时发生 ContactEvents::FORM_SUCCESS
- 在联系表单处理过程中保存联系信息后发生 ContactEvents::FORM_COMPLETED
每个事件都允许您自定义此包提供的默认工作流程。
贡献
有任何问题或反馈?请创建一个问题,我会尽快回复。
这里缺少功能吗?请随意创建一个 pull request 来解决它!
希望这很有用,并帮助了您。如果是这样,请分享并推荐它! :)