mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-07-10 13:29:58 +02:00
5ad7d5169f
Linked to #10099, I noticed another occurrence of /app/code/, so I've search and replaced all of them to /app/src/ for the correct v4 structure
1.5 KiB
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/src/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]