silverstripe-framework/docs/en/02_Developer_Guides/03_Forms/How_Tos/02_Lightweight_Form.md
Michael Pritchard fdbd899766 DOC Update SilverStripe to Silverstripe CMS
- Remaining Developer Guides and Upgrading
- SilverStripe in a namespace or api has not been change
- To keep PRs easier no formatting was changed

Update merge conflics with two files

Update Silverstripe Ltd, Silverstripe Cloud and Silverstripe CMS

Silverstripe CMS Ltd > Silverstripe Ltd
Silverstripe CMS Platform > Silverstripe Cloud
Silverstripe CMS Framework > Silverstripe CMS

Resolve merge conflict

Remove Framework from Silverstripe CMS Framework

- 3 files

Change SilverStripe CMS to Silverstripe CMS
2021-07-30 13:54:15 +01:00

1.5 KiB

title summary iconBrand
How to Create Lightweight Form Create a simple search form with Silverstripe CMS wpforms

How to Create Lightweight Form

Out of the box, Silverstripe CMS provides a robust and reusable set of HTML markup for FormField, however this can sometimes produce markup which is unnecessarily bloated.

For example, a basic search form. We want to use the Form API to handle the form but we may want to provide a totally custom template to meet our needs. To do this, we'll provide the class with a unique template through setTemplate.

app/code/Page.php

public function SearchForm() 
{
    $fields = new FieldList(
        TextField::create('q')
    );

    $actions = new FieldList(
        FormAction::create('doSearch', 'Search')
    );

    $form = new Form($this, 'SearchForm', $fields, $actions);
    $form->setTemplate('SearchForm');

    return $form;
}

app/templates/Includes/SearchForm.ss

<form $FormAttributes>
    <fieldset>
        $Fields.dataFieldByName(q)
    </fieldset>
    
    <div class="Actions">
        <% loop $Actions %>$Field<% end_loop %>
    </div>
</form>

SearchForm.ss will be executed within the scope of the Form object so has access to any of the methods and properties on Form such as $Fields and $Actions.

[notice] To understand more about Scope or the syntax for custom templates, read the Templates guide. [/notice]