milesherndon/formstack

此包已被弃用且不再维护。未建议替代包。

插件,用于将Formstack表单集成到Craft CMS 3。

安装: 41

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

类型:craft-plugin

1.0.3 2018-10-08 16:15 UTC

README

⛔️ 已弃用 ⛔️

Craft CMS 3.x版本的Formstack插件

插件,用于集成Formstack表单。

Formstack Logo

要求

此插件需要Craft CMS 3.0.0或更高版本。

安装

要安装插件,请按照以下说明操作。

  1. 打开您的终端并转到您的Craft项目

     cd /path/to/project
    
  2. 然后告诉Composer加载插件

     composer require milesherndon/formstack
    
  3. 在控制面板中,转到设置 → 插件,然后点击Formstack的“安装”按钮。

Formstack概述

此插件具有Formstack Form字段类型,允许选择表单。字段直接从关联的账户拉取表单。

此外,当字段显示时,它还会提供Formstack返回的所选表单的JSON。

配置Formstack

安装后,转到设置 -> Formstack并保存oAuth令牌。此令牌可以在Formstack账户的API设置中找到。

使用Formstack

字段类型

创建一个字段并选择Formstack Form字段类型。

显示表单

使用来自formstack的数据设置表单变量。

{% set formstack = craft.formstack.getFormById(entry.contactForm) %}

默认情况下,只返回响应中的字段。但是,可以通过添加第二个参数来返回额外项,如下所示

{% set formstack = craft.formstack.getFormById(entry.contactForm, ['viewkey', 'name']) %}

这将同时在响应中传递viewkey和name。要查看可以返回的内容,请查看API文档

示例模板

{% set formstack = craft.formstack.getFormById(entry.contactForm, ['viewkey']) %}

    {% if formstack is defined %}

        <form method="post" novalidate action="" id="fsForm{{entry.contactForm}}" class="contact__form__form form__form js-form fsForm" >
            <input type="hidden" name="action" value="formstack/form-submit" />
            <input type="hidden" name="redirect" value="{{ entry.getUrl() }}" />
            <input type="hidden" name="success" value="Thanks for your message, we will be in touch soon." />
            <input type="hidden" name="form" value="{{entry.contactForm}}" />
            <input type="hidden" name="viewkey" value="{{formstack.viewkey}}" />
            <input type="hidden" name="hidden_fields" id="hidden_fields{{entry.contactForm}}" value="" />
            <input type="hidden" name="_submit" value="1" />
            <input type="hidden" name="incomplete" id="incomplete{{entry.contactForm}}" value="" />
            <input type="hidden" id="viewparam" name="viewparam" value="636555" />
            <input type="hidden" id="analytics" name="analytics" value="https://analytics.formstack.com">
            <input type="hidden" name="{{ craft.app.config.general.csrfTokenName }}" value="{{ craft.app.request.csrfToken }}">

            <div class="fsPage" id="fsPage{{entry.contactForm}}-1">
                {% for field in formstack.fields %}
                    <div class="form__input-wrapper fsCell fsFieldCell" id="fsCell{{field.id}}">
                        {% if field.type == "name" or field.type == "text" or field.type == "email" or field.type == "phone" %}
                            {% if field.placeholder is defined and field.placeholder is not empty %}
                                {% set placeholder = field.placeholder %}
                            {% else %}
                                {% set placeholder = field.label %}
                            {% endif %}
                            <input type="{{field.type}}" id="field{{field.id}}" name="field_{{field.id}}" class="fsField{% if field.required %} fsRequired required{% endif %}" {% if field.required %}aria-required="true" required="required"{% endif %} placeholder="{{placeholder}}"/>
                            <label for="field{{field.id}}">{{field.label}} {% if field.required %} <span>*</span>{% endif %}</label>
                        {% endif %}
                        {% if field.type == "textarea" %}
                            <textarea id="field{{field.id}}" name="field_{{field.id}}" class="fsField{% if field.required %} fsRequired required{% endif %}" {% if field.required %}aria-required="true" required="required"{% endif %} placeholder=""></textarea>
                            <label for="field{{field.id}}">{{field.label}} {% if field.required %} <span>*</span>{% endif %}</label>
                        {% endif %}
                        {% if field.type == "select" %}
                            <div class="select-box">
                                <select id="field{{field.id}}" name="field_{{field.id}}" class="fsField{% if field.required %} fsRequired required{% endif %}" {% if field.required %}aria-required="true" required="required"{% endif %}>
                                    <option value="" disabled selected>Choose One</option>
                                    {% for option in field.options %}
                                        <option value="{{option.value}}">{{option.label}}</option>
                                    {% endfor %}
                                </select>
                            </div>
                            <label id="label{{field.id}}" for="field{{field.id}}">{{field.label}} {% if field.required %} <span>*</span>{% endif %}</label>
                        {% endif %}
                    </div>
                {% endfor %}
            </div>

            <div id="fsSubmit{{entry.contactForm}}" class="fsSubmit">
                <input type="submit" id="fsSubmitButton{{entry.contactForm}}" class="fsSubmitButton" value="Submit" />
            </div>
        </form>
    {% endif %}

Formstack路线图

  • 添加额外检查以验证表单是否存在
  • 允许默认表单选择
  • 添加默认模板
  • 添加Formstack响应缓存

MilesHerndon提供