PHPackages                             remo/attribute\_free\_form - 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. remo/attribute\_free\_form

ActiveConcrete5-package[Utility &amp; Helpers](/categories/utility)

remo/attribute\_free\_form
==========================

344[1 issues](https://github.com/Remo/attribute-free-form/issues)PHP

Since Jan 9Pushed 9y ago3 watchersCompare

[ Source](https://github.com/Remo/attribute-free-form)[ Packagist](https://packagist.org/packages/remo/attribute_free_form)[ RSS](/packages/remo-attribute-free-form/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Attribute Free Form
===================

[](#attribute-free-form)

A concrete5.7 attribute you can use to quickly create your own attribute types.

When you add a free form attribute, you've got two fields, one where you specify the form you'll see when you enter some data and a view form you'll see when the data is presented to the end-user.

In order to to save and load fields you have to use specific names which will be replaced at runtime.

Example 1 - Simple field
------------------------

[](#example-1---simple-field)

edit form:

```
Name:

```

view:

```
Name:
[ATTRIBUTE_VALUE(Name)]
```

Example 2 - Hidden fields with JavaScript
-----------------------------------------

[](#example-2---hidden-fields-with-javascript)

edit form:

```

    Address:

    $(document).ready(function() {
        $("#address").on("change", function() {
            var address = $(this).val();
            $.ajax({
                url:"http://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&sensor=false",
                type: "POST",
                success:function(res){
                    lat = res.results[0].geometry.location.lat;
                    long = res.results[0].geometry.location.lng;
                    $("#lat").val(lat);
                    $("#long").val(long);
                }
            });
        });
    })

```

view:

```

    Address[ATTRIBUTE_VALUE(Address)] ([ATTRIBUTE_VALUE(Lat)] / [ATTRIBUTE_VALUE(Long)])

```

Example 3 - Access fields programmatically
------------------------------------------

[](#example-3---access-fields-programmatically)

Assuming you've got the form in place from the first example using an attribute handle of `test_attribute`. If you want to work with the attribute fields from a custom theme or another concrete5 method, you can use the following approach.

```
// get the page we want to work with
$p = \Page::getByID(1);

// show attribute view
echo $p->getAttribute('test_attribute');

// get value of our attribute field called "Name"
$values = $p->getAttribute('test_attribute', 'variables');
echo $values['Name'];
```

Example 4 - Save fields programmatically
----------------------------------------

[](#example-4---save-fields-programmatically)

If you want to write the values of this attribute you can simply call the `setAttribute` method with an array as its parameter.

```
// get the page we want to work with
$p = \Page::getByID(1);

// show attribute view
$p->setAttribute('test_attribute', ['Name' => 'Remo']);
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/9288570e91c034c82414fc2085a87344711e329feb063d21ab7b18ece811234e?d=identicon)[Remo](/maintainers/Remo)

---

Top Contributors

[![Remo](https://avatars.githubusercontent.com/u/129864?v=4)](https://github.com/Remo "Remo (7 commits)")

---

Tags

concrete5

### Embed Badge

![Health badge](/badges/remo-attribute-free-form/health.svg)

```
[![Health](https://phpackages.com/badges/remo-attribute-free-form/health.svg)](https://phpackages.com/packages/remo-attribute-free-form)
```

###  Alternatives

[symfony/remote-event

Eases handling remote events

293.0M6](/packages/symfony-remote-event)[stephenjude/filament-blog

Filament Blog Builder

20317.8k](/packages/stephenjude-filament-blog)

PHPackages © 2026

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