th3mouk/contact-bundle

此包已废弃,不再维护。未建议替代包。

Symfony Th3MoukContactBundle 用于通过网站简化联系表单的生成。

安装: 271

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.2.0 2016-01-28 10:52 UTC

This package is auto-updated.

Last update: 2021-10-04 21:12:25 UTC


README

Symfony 包提供了管理联系表单的基础。

目标是简化网站联系表单。

SensioLabsInsight Latest Stable Version Total Downloads Build Status Latest Unstable Version License

安装

php composer.phar require th3mouk/contact-bundle ^1.2

添加到 appKernel.php

new Th3Mouk\ContactBundle\Th3MoukContactBundle(),

更新你的 routing.yml 应用程序文件。

th3mouk_contact:
    resource: "@Th3MoukContactBundle/Resources/config/routing.yml"
    prefix:   /contact

config.yml 中配置实体和模板

th3mouk_contact:
    datas:
        from: noreply@domain.com
        to:
            - test.mail@domain.com
        subject: Contact request from your website
            
    class:
        entity: AppBundle\Entity\Contact
        formType: AppBundle\Form\ContactType

    templates:
        application: AppBundle:Contact:contact.html.twig
        mailer: AppBundle:Contact:mail.html.twig
        
    flash_messages:
        success: contact.mail.success
        error: contact.mail.error

使用

使用 app/console d:g:entity 创建实现 Th3Mouk\ContactBundle\Entity\ContactInterfaceContact 实体。

生成相关的 FormType: app/console d:g:f AppBundle:Contact

为前端和邮件创建两个模板,你可以访问 form 对象来绘制你的表单,以及在邮件模板中的 contact 对象。

查看以下示例

联系类型示例

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ContactType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array                $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('adress')
            ->add('zipCode')
            ->add('city')
            ->add('phone')
            ->add('email', 'email')
            ->add('message')
        ;
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Contact',
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'app_contact_type';
    }
}

表单模板示例

<h1>Contact Request</h1>

{{ form_start(form) }}

{{ form_row(form.name) }}
{{ form_row(form.adress) }}
{{ form_row(form.zipCode) }}
{{ form_row(form.city) }}
{{ form_row(form.phone) }}
{{ form_row(form.email) }}
{{ form_row(form.message) }}

<div class="form-group"><button type="submit" class="btn-default btn">Submit</button></div>

{{ form_rest(form) }}
{{ form_end(form) }}

邮件模板示例

{{ contact.name }}<br>
{{ contact.adress }}<br>
{{ contact.zipCode }}<br>
{{ contact.city }}<br>
{{ contact.phone }}<br>
{{ contact.email }}<br>
{{ contact.message }}

Sonata 集成示例

首先使用 app/console sonata:admin:generate 命令。

然后添加服务配置

app.admin.contact:
    class: AppBundle\Admin\ContactAdmin
    arguments: [~, AppBundle\Entity\Contact, SonataAdminBundle:CRUD]
    tags:
        - {name: sonata.admin, manager_type: orm, label: Contacts}

在仪表板上添加管理组

sonata.admin.group.contact:
    label:           Contact
    label_catalogue: SonataPageBundle
    icon:            '<i class="fa fa-envelope"></i>'
    items:
        - app.admin.contact
    roles: [ ROLE_ADMIN ]

别忘了在块上添加此组

sonata_admin:
    dashboard:
        blocks:
            - { position: left, type: sonata.admin.block.admin_list, settings: { groups: [...sonata.admin.group.contact...] }}

完成!👍

事件

在邮件发送前后,你可以访问两个事件

请随意改进此包。