mremi/contact-bundle

Symfony2的联系方式表实现

安装次数: 12,065

依赖关系: 2

建议者: 0

安全: 0

星级: 27

关注者: 5

分支: 23

开放问题: 5

类型:symfony-bundle

v1.3.0 2015-10-27 12:23 UTC

This package is auto-updated.

Last update: 2024-08-26 23:52:07 UTC


README

SensioLabsInsight

Build Status Total Downloads Latest Stable Version Scrutinizer Code Quality Code Coverage

此捆绑包为Symfony2提供联系表单。

许可证

此捆绑包可在MIT许可证下使用。

先决条件

此版本的捆绑包需要Symfony 2.3+。

翻译

如果您想使用此捆绑包提供的默认文本,请确保您已在您的配置中启用了翻译器。

# app/config/config.yml

framework:
    translator: ~

有关翻译的更多信息,请参阅Symfony文档

安装

安装是一个快速6步骤的过程

  1. 使用composer下载MremiContactBundle
  2. 启用捆绑包
  3. 创建您的联系类(可选)
  4. 配置MremiContactBundle
  5. 导入MremiContactBundle路由
  6. 更新您的数据库模式(可选)

步骤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类。

此捆绑包提供了一些基类,这些基类已经映射到大多数字段,以便更容易创建您的实体。以下是使用方法

  1. 从“Entity”文件夹扩展基Contact
  2. 映射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 个事件

  1. 当表单初始化时发生 ContactEvents::FORM_INITIALIZE
  2. 当表单提交成功时发生 ContactEvents::FORM_SUCCESS
  3. 在联系表单处理过程中保存联系信息后发生 ContactEvents::FORM_COMPLETED

每个事件都允许您自定义此包提供的默认工作流程。

贡献

有任何问题或反馈?请创建一个问题,我会尽快回复。

这里缺少功能吗?请随意创建一个 pull request 来解决它!

希望这很有用,并帮助了您。如果是这样,请分享并推荐它! :)

@mremitsme