PHPackages                             gromit/oc-forms-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. gromit/oc-forms-plugin

ActiveOctober-plugin[Utility &amp; Helpers](/categories/utility)

gromit/oc-forms-plugin
======================

Frontend forms builder for OctoberCMS.

1.0.5(2y ago)6174[4 issues](https://github.com/gromitsoft/oc-forms-plugin/issues)MITPHPPHP &gt;=7.2

Since Mar 4Pushed 2y ago2 watchersCompare

[ Source](https://github.com/gromitsoft/oc-forms-plugin)[ Packagist](https://packagist.org/packages/gromit/oc-forms-plugin)[ RSS](/packages/gromit-oc-forms-plugin/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

**GromIT.Forms** is a Simple and powerful frontend forms constructor for October CMS.

Creating forms
--------------

[](#creating-forms)

For create new form go to **Forms** in the main menu. Then click on **Add form** button.

On next page you can create new empty form. Form key must be unique.

After creating new empty form you can add fields on the form. For doing this click on **Add field** button and choose field type. You can add as many fields as you want.

reCAPTCHA
---------

[](#recaptcha)

**GromIT.Forms** has Google reCAPTCHA support.

For use reCAPTCHA on your forms you must go to **Settings -&gt; Forms plugin settings -&gt; reCAPTCHA** and enter your site key and secret key. You can obtain keys in [reCAPTCHA control panel](https://www.google.com/recaptcha/admin).

Rendering Forms
---------------

[](#rendering-forms)

For render form on page go to **CMS -&gt; Pages -&gt; Your page**and drop **Form** component from the sidebar to the page. Then in component settings choose form for render. All forms renders without styling so all CSS is up to you.

Another option is render form by yourself. You can do this like on the sample below.

```
title = "Form"
url = "/"

[gromitForms]
==
{% set form = gromitForms.getForm('test-form-key') %}

                Your name

        Submit

```

Do not forget to add October AJAX framework with extras and field **form\_key** with form key.

Export and import forms
-----------------------

[](#export-and-import-forms)

After creating the form you can export this for importing later. This is very useful for testing form on your development machine and import on production later.

For export for go to form editing page and click on **Export** button at the bottom of the page.

For import form go to **Forms** page and click upload button. Then choose file and click Upload. If form with key from uploaded file already exists key will be suffixed with random string.

Export submissions
------------------

[](#export-submissions)

For export submissions

- go to **Forms -&gt; Submissions**
- click on **Export** button in the toolbar
- choose form
- click **Export**

Events
------

[](#events)

There are some events provided by the plugin. You can catch them and do something with this.

```
Event::listen(
    'gromit.forms::form.submitting',
    function (Form $form, array $data, ?array $requestData, ?array $userData) {
        //
    }
);

Event::listen(
    'gromit.forms::form.submitted',
    function (Form $form, Submission $submission) {
        //
    }
);

```

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance7

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

804d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/77480921?v=4)[gromitsoft](/maintainers/gromitsoft)[@gromitsoft](https://github.com/gromitsoft)

---

Top Contributors

[![SergeyKasyanov](https://avatars.githubusercontent.com/u/9932569?v=4)](https://github.com/SergeyKasyanov "SergeyKasyanov (7 commits)")[![chrisvidal](https://avatars.githubusercontent.com/u/2263496?v=4)](https://github.com/chrisvidal "chrisvidal (6 commits)")[![m49n](https://avatars.githubusercontent.com/u/15114737?v=4)](https://github.com/m49n "m49n (1 commits)")

### Embed Badge

![Health badge](/badges/gromit-oc-forms-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/gromit-oc-forms-plugin/health.svg)](https://phpackages.com/packages/gromit-oc-forms-plugin)
```

###  Alternatives

[rainlab/blog-plugin

Blog plugin for October CMS

17257.7k](/packages/rainlab-blog-plugin)[rainlab/builder-plugin

Builder plugin for October CMS

17147.2k1](/packages/rainlab-builder-plugin)[pfefferle/wordpress-activitypub

The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.

5671.4k1](/packages/pfefferle-wordpress-activitypub)[civicrm/civicrm-drupal-8

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

18238.1k2](/packages/civicrm-civicrm-drupal-8)[mediawiki/semantic-glossary

A terminology markup extension with a Semantic MediaWiki back-end

1352.4k](/packages/mediawiki-semantic-glossary)[humanmade/lottie-lite

A lightweight Lottie Animations Extension for WordPress

374.3k](/packages/humanmade-lottie-lite)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
