CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Reporting Security Issues
    • Privacy Policy
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Get Involved
    • Issues (Github)
    • Bakery
    • Featured Resources
    • Training
    • Meetups
    • My CakePHP
    • CakeFest
    • Newsletter
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • Help & Support
    • Forum
    • Stack Overflow
    • IRC
    • Slack
    • Paid Support
CakePHP

C CakePHP 4.6 Strawberry API

  • Project:
    • CakePHP
      • CakePHP
      • Authentication
      • Authorization
      • Chronos
      • Elastic Search
      • Queue
  • Version:
    • 4.6
      • 5.2
      • 5.1
      • 5.0
      • 4.6
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

Namespaces

  • Global
  • Cake
    • Auth
    • Cache
    • Collection
    • Command
    • Console
    • Controller
    • Core
    • Database
    • Datasource
    • Error
    • Event
    • Filesystem
    • Form
    • Http
    • I18n
    • Log
    • Mailer
    • Network
    • ORM
    • Routing
    • Shell
    • TestSuite
    • Utility
    • Validation
    • View
      • Exception
      • Form
      • Helper
      • Widget

Class FormHelper

Form helper library.

Automatic generation of HTML FORMs from given data.

Namespace: Cake\View\Helper
Link: https://book.cakephp.org/4/en/views/helpers/form.html

Constants

  • string
    SECURE_SKIP ¶
    'skip'

    Constant used internally to skip the securing process, and neither add the field to the hash or to the unlocked fields.

Property Summary

  • $Html public @property
    Cake\View\Helper\HtmlHelper
  • $Url public @property
    Cake\View\Helper\UrlHelper
  • $_View protected
    Cake\View\View

    The View instance this helper is attached to

  • $_config protected
    array<string, mixed>

    Runtime config

  • $_configInitialized protected
    bool

    Whether the config property has already been configured with defaults

  • $_context protected
    Cake\View\Form\ContextInterface|null

    Context for the current form.

  • $_contextFactory protected
    Cake\View\Form\ContextFactory|null

    Context factory.

  • $_defaultConfig protected
    array<string, mixed>

    Default config for the helper.

  • $_defaultWidgets protected
    array<string, array<string>>

    Default widgets

  • $_groupedInputTypes protected
    array<string>

    Grouped input types.

  • $_helperMap protected
    array<string, array>

    A helper lookup table used to lazy load helper objects.

  • $_idPrefix protected
    string|null

    Prefix for id attribute.

  • $_idSuffixes protected
    array<string>

    A list of id suffixes used in the current rendering.

  • $_lastAction protected
    string

    The action attribute value of the last created form. Used to make form/request specific hashes for form tampering protection.

  • $_locator protected
    Cake\View\Widget\WidgetLocator

    Locator for input widgets.

  • $_templater protected
    Cake\View\StringTemplate|null

    StringTemplate instance.

  • $_valueSources protected
    array<string>

    The default sources.

  • $formProtector protected
    Cake\Form\FormProtector|null

    Form protector

  • $helpers protected
    array

    Other helpers used by FormHelper

  • $requestType public
    string|null

    Defines the type of form being created. Set by FormHelper::create().

  • $supportedValueSources protected
    array<string>

    The supported sources that can be used to populate input values.

Method Summary

  • __call() public

    Missing method handler - implements various simple input types. Is used to create inputs of various types. e.g. $this->Form->text(); will create <input type="text"> while $this->Form->range(); will create <input type="range">

  • __construct() public

    Construct the widgets and binds the default context providers

  • __debugInfo() public

    Returns an array that can be used to describe the internal state of this object.

  • __get() public

    Lazy loads helpers.

  • _clearIds() protected

    Clear the stored ID suffixes.

  • _configDelete() protected

    Deletes a single config key.

  • _configRead() protected

    Reads a config key.

  • _configWrite() protected

    Writes a config key.

  • _confirm() protected

    Returns a string to be used as onclick handler for confirm dialogs.

  • _csrfField() protected

    Return a CSRF input if the request data is present. Used to secure forms in conjunction with CsrfMiddleware.

  • _domId() protected

    Generate an ID suitable for use in an ID attribute.

  • _extractOption() protected

    Extracts a single option from an options array.

  • _formUrl() protected

    Create the URL for a form based on the options.

  • _getContext() protected

    Find the matching context provider for the data.

  • _getFormProtectorSessionId() protected

    Get Session id for FormProtector Must be the same as in FormProtectionComponent

  • _getInput() protected

    Generates an input element

  • _getLabel() protected

    Generate label for input

  • _groupTemplate() protected

    Generates an group template element

  • _id() protected

    Generate an ID attribute for an element.

  • _idSuffix() protected

    Generate an ID suffix.

  • _initInputField() protected

    Sets field defaults and adds field to form security input hash. Will also add the error class if the field contains validation errors.

  • _inputContainerTemplate() protected

    Generates an input container template

  • _inputLabel() protected

    Generate a label for an input() call.

  • _inputType() protected

    Returns the input type that was guessed for the provided fieldName, based on the internal type it is associated too, its name and the variables that can be found in the view template

  • _isDisabled() protected

    Determine if a field is disabled.

  • _lastAction() protected

    Correctly store the last created form action URL.

  • _magicOptions() protected

    Magically set option type and corresponding options

  • _optionsOptions() protected

    Selects the variable containing the options for a select field if present, and sets the value to the 'options' key in the options array.

  • _parseOptions() protected

    Generates input options array

  • addClass() public

    Adds the given class to the element options

  • addContextProvider() public

    Add a new context type.

  • addWidget() public

    Add a new widget to FormHelper.

  • allControls() public

    Generate a set of controls for $fields. If $fields is empty the fields of current model will be used.

  • button() public

    Creates a <button> tag.

  • checkbox() public

    Creates a checkbox input widget.

  • configShallow() public

    Merge provided config with existing config. Unlike config() which does a recursive merge for nested keys, this method does a simple merge.

  • context() public

    Get the context instance for the current form set.

  • contextFactory() public

    Set the context factory the helper will use.

  • control() public

    Generates a form control element complete with label and wrapper div.

  • controls() public

    Generate a set of controls for $fields wrapped in a fieldset element.

  • create() public

    Returns an HTML form element.

  • createFormProtector() protected

    Create FormProtector instance.

  • date() public

    Generate an input tag with type "date".

  • dateTime() public

    Generate an input tag with type "datetime-local".

  • email() public @method

    Creates input of type email.

  • end() public

    Closes an HTML form, cleans up values set by FormHelper::create(), and writes hidden input fields where appropriate.

  • error() public

    Returns a formatted error message for given form field, '' if no errors.

  • fieldset() public

    Wrap a set of inputs in a fieldset

  • file() public

    Creates file input widget.

  • formatTemplate() public

    Formats a template string with $data

  • getConfig() public

    Returns the config.

  • getConfigOrFail() public

    Returns the config for this specific key.

  • getFormProtector() public

    Get form protector instance.

  • getSourceValue() public

    Gets a single field value from the sources available.

  • getTemplates() public

    Gets templates to use or a specific template.

  • getValueSources() public

    Gets the value sources.

  • getView() public

    Get the view instance this helper is bound to.

  • getWidgetLocator() public

    Get the widget locator currently used by the helper.

  • hidden() public

    Creates a hidden input field.

  • implementedEvents() public

    Event listeners.

  • initialize() public

    Constructor hook method.

  • isFieldError() public

    Returns true if there is an error for the given field, otherwise false

  • label() public

    Returns a formatted LABEL element for HTML forms.

  • month() public

    Generate an input tag with type "month".

  • multiCheckbox() public

    Creates a set of checkboxes out of options.

  • number() public @method

    Creates input of type number.

  • password() public @method

    Creates input of type password.

  • postButton() public

    Create a <button> tag with a surrounding <form> that submits via POST as default.

  • postLink() public

    Creates an HTML link, but access the URL using the method you specify (defaults to POST). Requires javascript to be enabled in browser.

  • radio() public

    Creates a set of radio widgets.

  • resetTemplates() public

    Restores the default values built into FormHelper.

  • search() public @method

    Creates input of type search.

  • secure() public

    Generates a hidden field with a security hash based on the fields used in the form.

  • select() public

    Returns a formatted SELECT element.

  • setConfig() public

    Sets the config.

  • setRequiredAndCustomValidity() protected

    Set required attribute and custom validity JS.

  • setTemplates() public

    Sets templates to use.

  • setValueSources() public

    Sets the value sources.

  • setWidgetLocator() public

    Set the widget locator the helper will use.

  • submit() public

    Creates a submit button element. This method will generate <input> elements that can be used to submit, and reset forms by using $options. image submits can be created by supplying an image path for $caption.

  • templater() public

    Returns the templater instance.

  • text() public @method

    Creates input of type text.

  • textarea() public

    Creates a textarea widget.

  • time() public

    Generate an input tag with type "time".

  • unlockField() public

    Add to the list of fields that are currently unlocked.

  • validateValueSources() protected

    Validate value sources.

  • widget() public

    Render a named widget.

  • year() public

    Returns a SELECT element for years

Method Detail

__call() ¶ public

__call(string $method, array $params): string

Missing method handler - implements various simple input types. Is used to create inputs of various types. e.g. $this->Form->text(); will create <input type="text"> while $this->Form->range(); will create <input type="range">

Usage

$this->Form->search('User.query', ['value' => 'test']);

Will make an input like:

<input type="search" id="UserQuery" name="User[query]" value="test">

The first argument to an input type should always be the fieldname, in Model.field format. The second argument should always be an array of attributes for the input.

Parameters
string $method

Method name / input type to make.

array $params

Parameters for the method call

Returns
string
Throws
Cake\Core\Exception\CakeException
When there are no params for the method call.

__construct() ¶ public

__construct(Cake\View\View $view, array<string, mixed> $config = [])

Construct the widgets and binds the default context providers

Parameters
Cake\View\View $view

The View this helper is being attached to.

array<string, mixed> $config optional

Configuration settings for the helper.

__debugInfo() ¶ public

__debugInfo(): array<string, mixed>

Returns an array that can be used to describe the internal state of this object.

Returns
array<string, mixed>

__get() ¶ public

__get(string $name): Cake\View\Helper|null|void

Lazy loads helpers.

Parameters
string $name

Name of the property being accessed.

Returns
Cake\View\Helper|null|void

_clearIds() ¶ protected

_clearIds(): void

Clear the stored ID suffixes.

Returns
void

_configDelete() ¶ protected

_configDelete(string $key): void

Deletes a single config key.

Parameters
string $key

Key to delete.

Returns
void
Throws
Cake\Core\Exception\CakeException
if attempting to clobber existing config

_configRead() ¶ protected

_configRead(string|null $key): mixed

Reads a config key.

Parameters
string|null $key

Key to read.

Returns
mixed

_configWrite() ¶ protected

_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void

Writes a config key.

Parameters
array<string, mixed>|string $key

Key to write to.

mixed $value

Value to write.

string|bool $merge optional

True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.

Returns
void
Throws
Cake\Core\Exception\CakeException
if attempting to clobber existing config

_confirm() ¶ protected

_confirm(string $okCode, string $cancelCode): string

Returns a string to be used as onclick handler for confirm dialogs.

Parameters
string $okCode

Code to be executed after user chose 'OK'

string $cancelCode

Code to be executed after user chose 'Cancel'

Returns
string

_csrfField() ¶ protected

_csrfField(): string

Return a CSRF input if the request data is present. Used to secure forms in conjunction with CsrfMiddleware.

Returns
string

_domId() ¶ protected

_domId(string $value): string

Generate an ID suitable for use in an ID attribute.

Parameters
string $value

The value to convert into an ID.

Returns
string

_extractOption() ¶ protected

_extractOption(string $name, array<string, mixed> $options, mixed $default = null): mixed

Extracts a single option from an options array.

Parameters
string $name

The name of the option to pull out.

array<string, mixed> $options

The array of options you want to extract.

mixed $default optional

The default option value

Returns
mixed

_formUrl() ¶ protected

_formUrl(Cake\View\Form\ContextInterface $context, array<string, mixed> $options): array|string

Create the URL for a form based on the options.

Parameters
Cake\View\Form\ContextInterface $context

The context object to use.

array<string, mixed> $options

An array of options from create()

Returns
array|string

_getContext() ¶ protected

_getContext(mixed $data = []): Cake\View\Form\ContextInterface

Find the matching context provider for the data.

If no type can be matched a NullContext will be returned.

Parameters
mixed $data optional

The data to get a context provider for.

Returns
Cake\View\Form\ContextInterface
Throws
RuntimeException
when the context class does not implement the ContextInterface.

_getFormProtectorSessionId() ¶ protected

_getFormProtectorSessionId(): string

Get Session id for FormProtector Must be the same as in FormProtectionComponent

Returns
string

_getInput() ¶ protected

_getInput(string $fieldName, array<string, mixed> $options): array|string

Generates an input element

Parameters
string $fieldName

the field name

array<string, mixed> $options

The options for the input element

Returns
array|string

_getLabel() ¶ protected

_getLabel(string $fieldName, array<string, mixed> $options): string|false

Generate label for input

Parameters
string $fieldName

The name of the field to generate label for.

array<string, mixed> $options

Options list.

Returns
string|false

_groupTemplate() ¶ protected

_groupTemplate(array<string, mixed> $options): string

Generates an group template element

Parameters
array<string, mixed> $options

The options for group template

Returns
string

_id() ¶ protected

_id(string $name, string $val): string

Generate an ID attribute for an element.

Ensures that id's for a given set of fields are unique.

Parameters
string $name

The ID attribute name.

string $val

The ID attribute value.

Returns
string

_idSuffix() ¶ protected

_idSuffix(string $val): string

Generate an ID suffix.

Ensures that id's for a given set of fields are unique.

Parameters
string $val

The ID attribute value.

Returns
string

_initInputField() ¶ protected

_initInputField(string $field, array<string, mixed>|array<string> $options = []): array<string, mixed>

Sets field defaults and adds field to form security input hash. Will also add the error class if the field contains validation errors.

Options

  • secure - boolean whether the field should be added to the security fields. Disabling the field using the disabled option, will also omit the field from being part of the hashed key.
  • default - mixed - The value to use if there is no value in the form's context.
  • disabled - mixed - Either a boolean indicating disabled state, or the string in a numerically indexed value.
  • id - mixed - If true it will be auto generated based on field name.

This method will convert a numerically indexed 'disabled' into an associative array value. FormHelper's internals expect associative options.

The output of this function is a more complete set of input attributes that can be passed to a form widget to generate the actual input.

Parameters
string $field

Name of the field to initialize options for.

array<string, mixed>|array<string> $options optional

Array of options to append options into.

Returns
array<string, mixed>

_inputContainerTemplate() ¶ protected

_inputContainerTemplate(array<string, mixed> $options): string

Generates an input container template

Parameters
array<string, mixed> $options

The options for input container template

Returns
string

_inputLabel() ¶ protected

_inputLabel(string $fieldName, array<string, mixed>|string|null $label = null, array<string, mixed> $options = []): string

Generate a label for an input() call.

$options can contain a hash of id overrides. These overrides will be used instead of the generated values if present.

Parameters
string $fieldName

The name of the field to generate label for.

array<string, mixed>|string|null $label optional

Label text or array with label attributes.

array<string, mixed> $options optional

Options for the label element.

Returns
string

_inputType() ¶ protected

_inputType(string $fieldName, array<string, mixed> $options): string

Returns the input type that was guessed for the provided fieldName, based on the internal type it is associated too, its name and the variables that can be found in the view template

Parameters
string $fieldName

the name of the field to guess a type for

array<string, mixed> $options

the options passed to the input method

Returns
string

_isDisabled() ¶ protected

_isDisabled(array<string, mixed> $options): bool

Determine if a field is disabled.

Parameters
array<string, mixed> $options

The option set.

Returns
bool

_lastAction() ¶ protected

_lastAction(array|string|null $url = null): void

Correctly store the last created form action URL.

Parameters
array|string|null $url optional

The URL of the last form.

Returns
void

_magicOptions() ¶ protected

_magicOptions(string $fieldName, array<string, mixed> $options, bool $allowOverride): array<string, mixed>

Magically set option type and corresponding options

Parameters
string $fieldName

The name of the field to generate options for.

array<string, mixed> $options

Options list.

bool $allowOverride

Whether it is allowed for this method to overwrite the 'type' key in options.

Returns
array<string, mixed>

_optionsOptions() ¶ protected

_optionsOptions(string $fieldName, array<string, mixed> $options): array<string, mixed>

Selects the variable containing the options for a select field if present, and sets the value to the 'options' key in the options array.

Parameters
string $fieldName

The name of the field to find options for.

array<string, mixed> $options

Options list.

Returns
array<string, mixed>

_parseOptions() ¶ protected

_parseOptions(string $fieldName, array<string, mixed> $options): array<string, mixed>

Generates input options array

Parameters
string $fieldName

The name of the field to parse options for.

array<string, mixed> $options

Options list.

Returns
array<string, mixed>

addClass() ¶ public

addClass(array<string, mixed> $options, string $class, string $key = 'class'): array<string, mixed>

Adds the given class to the element options

Parameters
array<string, mixed> $options

Array options/attributes to add a class to

string $class

The class name being added.

string $key optional

the key to use for class. Defaults to 'class'.

Returns
array<string, mixed>

addContextProvider() ¶ public

addContextProvider(string $type, callable $check): void

Add a new context type.

Form context types allow FormHelper to interact with data providers that come from outside CakePHP. For example if you wanted to use an alternative ORM like Doctrine you could create and connect a new context class to allow FormHelper to read metadata from doctrine.

Parameters
string $type

The type of context. This key can be used to overwrite existing providers.

callable $check

A callable that returns an object when the form context is the correct type.

Returns
void

addWidget() ¶ public

addWidget(string $name, Cake\View\Widget\WidgetInterface|array $spec): void

Add a new widget to FormHelper.

Allows you to add or replace widget instances with custom code.

Parameters
string $name

The name of the widget. e.g. 'text'.

Cake\View\Widget\WidgetInterface|array $spec

Either a string class name or an object implementing the WidgetInterface.

Returns
void

allControls() ¶ public

allControls(array $fields = [], array<string, mixed> $options = []): string

Generate a set of controls for $fields. If $fields is empty the fields of current model will be used.

You can customize individual controls through $fields.

$this->Form->allControls([
  'name' => ['label' => 'custom label']
]);

You can exclude fields by specifying them as false:

$this->Form->allControls(['title' => false]);

In the above example, no field would be generated for the title field.

Parameters
array $fields optional

An array of customizations for the fields that will be generated. This array allows you to set custom types, labels, or other options.

array<string, mixed> $options optional

Options array. Valid keys are:

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#generating-entire-forms

button() ¶ public

button(string $title, array<string, mixed> $options = []): string

Creates a <button> tag.

Options:

  • type - Value for "type" attribute of button. Defaults to "submit".
  • escapeTitle - HTML entity encode the title of the button. Defaults to true.
  • escape - HTML entity encode the attributes of button tag. Defaults to true.
  • confirm - Confirm message to show. Form execution will only continue if confirmed then.
Parameters
string $title

The button's caption. Not automatically HTML encoded

array<string, mixed> $options optional

Array of options and HTML attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-button-elements

checkbox() ¶ public

checkbox(string $fieldName, array<string, mixed> $options = []): array<string>|string

Creates a checkbox input widget.

Options:

  • value - the value of the checkbox
  • checked - boolean indicate that this checkbox is checked.
  • hiddenField - boolean|string. Set to false to disable a hidden input from being generated. Passing a string will define the hidden input value.
  • disabled - create a disabled input.
  • default - Set the default value for the checkbox. This allows you to start checkboxes as checked, without having to check the POST data. A matching POST data value, will overwrite the default value.
Parameters
string $fieldName

Name of a field, like this "modelname.fieldname"

array<string, mixed> $options optional

Array of HTML attributes.

Returns
array<string>|string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-checkboxes

configShallow() ¶ public

configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this

Merge provided config with existing config. Unlike config() which does a recursive merge for nested keys, this method does a simple merge.

Setting a specific value:

$this->configShallow('key', $value);

Setting a nested value:

$this->configShallow('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->configShallow(['one' => 'value', 'another' => 'value']);
Parameters
array<string, mixed>|string $key

The key to set, or a complete array of configs.

mixed|null $value optional

The value to set.

Returns
$this

context() ¶ public

context(Cake\View\Form\ContextInterface|null $context = null): Cake\View\Form\ContextInterface

Get the context instance for the current form set.

If there is no active form null will be returned.

Parameters
Cake\View\Form\ContextInterface|null $context optional

Either the new context when setting, or null to get.

Returns
Cake\View\Form\ContextInterface

contextFactory() ¶ public

contextFactory(Cake\View\Form\ContextFactory|null $instance = null, array $contexts = []): Cake\View\Form\ContextFactory

Set the context factory the helper will use.

Parameters
Cake\View\Form\ContextFactory|null $instance optional

The context factory instance to set.

array $contexts optional

An array of context providers.

Returns
Cake\View\Form\ContextFactory

control() ¶ public

control(string $fieldName, array<string, mixed> $options = []): string

Generates a form control element complete with label and wrapper div.

Options

See each field type method for more information. Any options that are part of $attributes or $options for the different type methods can be included in $options for control(). Additionally, any unknown keys that are not in the list below, or part of the selected type's options will be treated as a regular HTML attribute for the generated input.

  • type - Force the type of widget you want. e.g. type => 'select'
  • label - Either a string label, or an array of options for the label. See FormHelper::label().
  • options - For widgets that take options e.g. radio, select.
  • error - Control the error message that is produced. Set to false to disable any kind of error reporting (field error and error messages).
  • empty - String or boolean to enable empty select box options.
  • nestedInput - Used with checkbox and radio inputs. Set to false to render inputs outside of label elements. Can be set to true on any input to force the input inside the label. If you enable this option for radio buttons you will also need to modify the default radioWrapper template.
  • templates - The templates you want to use for this input. Any templates will be merged on top of the already loaded templates. This option can either be a filename in /config that contains the templates you want to load, or an array of templates to use.
  • labelOptions - Either false to disable label around nestedWidgets e.g. radio, multicheckbox or an array of attributes for the label tag. selected will be added to any classes e.g. class => 'myclass' where widget is checked
Parameters
string $fieldName

This should be "modelname.fieldname"

array<string, mixed> $options optional

Each type of input takes different options.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-form-controls

controls() ¶ public

controls(array $fields, array<string, mixed> $options = []): string

Generate a set of controls for $fields wrapped in a fieldset element.

You can customize individual controls through $fields.

$this->Form->controls([
  'name' => ['label' => 'custom label'],
  'email'
]);
Parameters
array $fields

An array of the fields to generate. This array allows you to set custom types, labels, or other options.

array<string, mixed> $options optional

Options array. Valid keys are:

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#generating-entire-forms

create() ¶ public

create(mixed $context = null, array<string, mixed> $options = []): string

Returns an HTML form element.

Options:

  • type Form method defaults to autodetecting based on the form context. If the form context's isCreate() method returns false, a PUT request will be done.
  • method Set the form's method attribute explicitly.
  • url The URL the form submits to. Can be a string or a URL array.
  • encoding Set the accept-charset encoding for the form. Defaults to Configure::read('App.encoding')
  • enctype Set the form encoding explicitly. By default type => file will set enctype to multipart/form-data.
  • templates The templates you want to use for this form. Any templates will be merged on top of the already loaded templates. This option can either be a filename in /config that contains the templates you want to load, or an array of templates to use.
  • context Additional options for the context class. For example the EntityContext accepts a 'table' option that allows you to set the specific Table class the form should be based on.
  • idPrefix Prefix for generated ID attributes.
  • valueSources The sources that values should be read from. See FormHelper::setValueSources()
  • templateVars Provide template variables for the formStart template.
Parameters
mixed $context optional

The context for which the form is being defined. Can be a ContextInterface instance, ORM entity, ORM resultset, or an array of meta data. You can use null to make a context-less form.

array<string, mixed> $options optional

An array of html attributes and options.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#Cake\View\Helper\FormHelper::create

createFormProtector() ¶ protected

createFormProtector(array<string, mixed> $formTokenData): Cake\Form\FormProtector

Create FormProtector instance.

Parameters
array<string, mixed> $formTokenData

Token data.

Returns
Cake\Form\FormProtector

date() ¶ public

date(string $fieldName, array<string, mixed> $options = []): string

Generate an input tag with type "date".

Options:

See dateTime() options.

Parameters
string $fieldName

The field name.

array<string, mixed> $options optional

Array of options or HTML attributes.

Returns
string

dateTime() ¶ public

dateTime(string $fieldName, array<string, mixed> $options = []): string

Generate an input tag with type "datetime-local".

Options:

  • value | default The default value to be used by the input. If set to true current datetime will be used.
Parameters
string $fieldName

The field name.

array<string, mixed> $options optional

Array of options or HTML attributes.

Returns
string

email() ¶ public @method

email(string $fieldName, array $options = []): string

Creates input of type email.

Parameters
string $fieldName
array $options optional
Returns
string

end() ¶ public

end(array<string, mixed> $secureAttributes = []): string

Closes an HTML form, cleans up values set by FormHelper::create(), and writes hidden input fields where appropriate.

Resets some parts of the state, shared among multiple FormHelper::create() calls, to defaults.

Parameters
array<string, mixed> $secureAttributes optional

Secure attributes which will be passed as HTML attributes into the hidden input elements generated for the Security Component.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#closing-the-form

error() ¶ public

error(string $field, array|string|null $text = null, array<string, mixed> $options = []): string

Returns a formatted error message for given form field, '' if no errors.

Uses the error, errorList and errorItem templates. The errorList and errorItem templates are used to format multiple error messages per field.

Options:

  • escape boolean - Whether to html escape the contents of the error.
Parameters
string $field

A field name, like "modelname.fieldname"

array|string|null $text optional

Error message as string or array of messages. If an array, it should be a hash of key names => messages.

array<string, mixed> $options optional

See above.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#displaying-and-checking-errors

fieldset() ¶ public

fieldset(string $fields = '', array<string, mixed> $options = []): string

Wrap a set of inputs in a fieldset

Parameters
string $fields optional

the form inputs to wrap in a fieldset

array<string, mixed> $options optional

Options array. Valid keys are:

Returns
string

file() ¶ public

file(string $fieldName, array<string, mixed> $options = []): string

Creates file input widget.

Parameters
string $fieldName

Name of a field, in the form "modelname.fieldname"

array<string, mixed> $options optional

Array of HTML attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-file-inputs

formatTemplate() ¶ public

formatTemplate(string $name, array<string, mixed> $data): string

Formats a template string with $data

Parameters
string $name

The template name.

array<string, mixed> $data

The data to insert.

Returns
string

getConfig() ¶ public

getConfig(string|null $key = null, mixed $default = null): mixed

Returns the config.

Usage

Reading the whole config:

$this->getConfig();

Reading a specific value:

$this->getConfig('key');

Reading a nested value:

$this->getConfig('some.nested.key');

Reading with default value:

$this->getConfig('some-key', 'default-value');
Parameters
string|null $key optional

The key to get or null for the whole config.

mixed $default optional

The return value when the key does not exist.

Returns
mixed

getConfigOrFail() ¶ public

getConfigOrFail(string $key): mixed

Returns the config for this specific key.

The config value for this key must exist, it can never be null.

Parameters
string $key

The key to get.

Returns
mixed
Throws
InvalidArgumentException

getFormProtector() ¶ public

getFormProtector(): Cake\Form\FormProtector

Get form protector instance.

Returns
Cake\Form\FormProtector
Throws
Cake\Core\Exception\CakeException

getSourceValue() ¶ public

getSourceValue(string $fieldname, array<string, mixed> $options = []): mixed

Gets a single field value from the sources available.

Parameters
string $fieldname

The fieldname to fetch the value for.

array<string, mixed> $options optional

The options containing default values.

Returns
mixed

getTemplates() ¶ public

getTemplates(string|null $template = null): array|string

Gets templates to use or a specific template.

Parameters
string|null $template optional

String for reading a specific template, null for all.

Returns
array|string

getValueSources() ¶ public

getValueSources(): array<string>

Gets the value sources.

Returns a list, but at least one item, of valid sources, such as: 'context', 'data' and 'query'.

Returns
array<string>

getView() ¶ public

getView(): Cake\View\View

Get the view instance this helper is bound to.

Returns
Cake\View\View

getWidgetLocator() ¶ public

getWidgetLocator(): Cake\View\Widget\WidgetLocator

Get the widget locator currently used by the helper.

Returns
Cake\View\Widget\WidgetLocator

hidden() ¶ public

hidden(string $fieldName, array<string, mixed> $options = []): string

Creates a hidden input field.

Parameters
string $fieldName

Name of a field, in the form of "modelname.fieldname"

array<string, mixed> $options optional

Array of HTML attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-hidden-inputs

implementedEvents() ¶ public

implementedEvents(): array<string, mixed>

Event listeners.

By defining one of the callback methods a helper is assumed to be interested in the related event.

Override this method if you need to add non-conventional event listeners. Or if you want helpers to listen to non-standard events.

Returns
array<string, mixed>

initialize() ¶ public

initialize(array<string, mixed> $config): void

Constructor hook method.

Implement this method to avoid having to overwrite the constructor and call parent.

Parameters
array<string, mixed> $config

The configuration settings provided to this helper.

Returns
void

isFieldError() ¶ public

isFieldError(string $field): bool

Returns true if there is an error for the given field, otherwise false

Parameters
string $field

This should be "modelname.fieldname"

Returns
bool
Links
https://book.cakephp.org/4/en/views/helpers/form.html#displaying-and-checking-errors

label() ¶ public

label(string $fieldName, string|null $text = null, array<string, mixed> $options = []): string

Returns a formatted LABEL element for HTML forms.

Will automatically generate a for attribute if one is not provided.

Options

  • for - Set the for attribute, if its not defined the for attribute will be generated from the $fieldName parameter using FormHelper::_domId().
  • escape - Set to false to turn off escaping of label text. Defaults to true.

Examples:

The text and for attribute are generated off of the fieldname

echo $this->Form->label('published');
<label for="PostPublished">Published</label>

Custom text:

echo $this->Form->label('published', 'Publish');
<label for="published">Publish</label>

Custom attributes:

echo $this->Form->label('published', 'Publish', [
  'for' => 'post-publish'
]);
<label for="post-publish">Publish</label>

Nesting an input tag:

echo $this->Form->label('published', 'Publish', [
  'for' => 'published',
  'input' => $this->text('published'),
]);
<label for="post-publish">Publish <input type="text" name="published"></label>

If you want to nest inputs in the labels, you will need to modify the default templates.

Parameters
string $fieldName

This should be "modelname.fieldname"

string|null $text optional

Text that will appear in the label field. If $text is left undefined the text will be inflected from the fieldName.

array<string, mixed> $options optional

An array of HTML attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-labels

month() ¶ public

month(string $fieldName, array<string, mixed> $options = []): string

Generate an input tag with type "month".

Options:

See dateTime() options.

Parameters
string $fieldName

The field name.

array<string, mixed> $options optional

Array of options or HTML attributes.

Returns
string

multiCheckbox() ¶ public

multiCheckbox(string $fieldName, iterable $options, array<string, mixed> $attributes = []): string

Creates a set of checkboxes out of options.

Options

  • escape - If true contents of options will be HTML entity encoded. Defaults to true.
  • val The selected value of the input.
  • class - When using multiple = checkbox the class name to apply to the divs. Defaults to 'checkbox'.
  • disabled - Control the disabled attribute. When creating checkboxes, true will disable all checkboxes. You can also set disabled to a list of values you want to disable when creating checkboxes.
  • hiddenField - Set to false to remove the hidden field that ensures a value is always submitted.
  • label - Either false to disable label around the widget or an array of attributes for the label tag. selected will be added to any classes e.g. 'class' => 'myclass' where widget is checked

Can be used in place of a select box with the multiple attribute.

Parameters
string $fieldName

Name attribute of the SELECT

iterable $options

Array of the OPTION elements (as 'value'=>'Text' pairs) to be used in the checkboxes element.

array<string, mixed> $attributes optional

The HTML attributes of the select element.

Returns
string
See Also
\Cake\View\Helper\FormHelper::select() for supported option formats.

number() ¶ public @method

number(string $fieldName, array $options = []): string

Creates input of type number.

Parameters
string $fieldName
array $options optional
Returns
string

password() ¶ public @method

password(string $fieldName, array $options = []): string

Creates input of type password.

Parameters
string $fieldName
array $options optional
Returns
string

postButton() ¶ public

postButton(string $title, array|string $url, array<string, mixed> $options = []): string

Create a <button> tag with a surrounding <form> that submits via POST as default.

This method creates a <form> element. So do not use this method in an already opened form. Instead use FormHelper::submit() or FormHelper::button() to create buttons inside opened forms.

Options:

  • data - Array with key/value to pass in input hidden
  • method - Request method to use. Set to 'delete' or others to simulate HTTP/1.1 DELETE (or others) request. Defaults to 'post'.
  • form - Array with any option that FormHelper::create() can take
  • Other options is the same of button method.
  • confirm - Confirm message to show. Form execution will only continue if confirmed then.
Parameters
string $title

The button's caption. Not automatically HTML encoded

array|string $url

URL as string or array

array<string, mixed> $options optional

Array of options and HTML attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-standalone-buttons-and-post-links

postLink() ¶ public

postLink(string $title, array|string|null $url = null, array<string, mixed> $options = []): string

Creates an HTML link, but access the URL using the method you specify (defaults to POST). Requires javascript to be enabled in browser.

This method creates a <form> element. If you want to use this method inside of an existing form, you must use the block option so that the new form is being set to a view block that can be rendered outside of the main form.

If all you are looking for is a button to submit your form, then you should use FormHelper::button() or FormHelper::submit() instead.

Options:

  • data - Array with key/value to pass in input hidden
  • method - Request method to use. Set to 'delete' to simulate HTTP/1.1 DELETE request. Defaults to 'post'.
  • confirm - Confirm message to show. Form execution will only continue if confirmed then.
  • block - Set to true to append form to view block "postLink" or provide custom block name.
  • Other options are the same of HtmlHelper::link() method.
  • The option onclick will be replaced.
Parameters
string $title

The content to be wrapped by tags.

array|string|null $url optional

Cake-relative URL or array of URL parameters, or external URL (starts with http://)

array<string, mixed> $options optional

Array of HTML attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-standalone-buttons-and-post-links

radio() ¶ public

radio(string $fieldName, iterable $options = [], array<string, mixed> $attributes = []): string

Creates a set of radio widgets.

Attributes:

  • value - Indicates the value when this radio button is checked.
  • label - Either false to disable label around the widget or an array of attributes for the label tag. selected will be added to any classes e.g. 'class' => 'myclass' where widget is checked
  • hiddenField - boolean|string. Set to false to not include a hidden input with a value of ''. Can also be a string to set the value of the hidden input. This is useful for creating radio sets that are non-continuous.
  • disabled - Set to true or disabled to disable all the radio buttons. Use an array of values to disable specific radio buttons.
  • empty - Set to true to create an input with the value '' as the first option. When true the radio label will be 'empty'. Set this option to a string to control the label value.
Parameters
string $fieldName

Name of a field, like this "modelname.fieldname"

iterable $options optional

Radio button options array.

array<string, mixed> $attributes optional

Array of attributes.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-radio-buttons

resetTemplates() ¶ public

resetTemplates(): void

Restores the default values built into FormHelper.

This method will not reset any templates set in custom widgets.

Returns
void

search() ¶ public @method

search(string $fieldName, array $options = []): string

Creates input of type search.

Parameters
string $fieldName
array $options optional
Returns
string

secure() ¶ public

secure(array $fields = [], array<string, mixed> $secureAttributes = []): string

Generates a hidden field with a security hash based on the fields used in the form.

If $secureAttributes is set, these HTML attributes will be merged into the hidden input tags generated for the Security Component. This is especially useful to set HTML5 attributes like 'form'.

Parameters
array $fields optional

If set specifies the list of fields to be added to FormProtector for generating the hash.

array<string, mixed> $secureAttributes optional

will be passed as HTML attributes into the hidden input elements generated for the Security Component.

Returns
string

select() ¶ public

select(string $fieldName, iterable $options = [], array<string, mixed> $attributes = []): string

Returns a formatted SELECT element.

Attributes:

  • multiple - show a multiple select box. If set to 'checkbox' multiple checkboxes will be created instead.
  • empty - If true, the empty select option is shown. If a string, that string is displayed as the empty element.
  • escape - If true contents of options will be HTML entity encoded. Defaults to true.
  • val The selected value of the input.
  • disabled - Control the disabled attribute. When creating a select box, set to true to disable the select box. Set to an array to disable specific option elements.

Using options

A simple array will create normal options:

$options = [1 => 'one', 2 => 'two'];
$this->Form->select('Model.field', $options));

While a nested options array will create optgroups with options inside them.

$options = [
 1 => 'bill',
    'fred' => [
        2 => 'fred',
        3 => 'fred jr.'
    ]
];
$this->Form->select('Model.field', $options);

If you have multiple options that need to have the same value attribute, you can use an array of arrays to express this:

$options = [
    ['text' => 'United states', 'value' => 'USA'],
    ['text' => 'USA', 'value' => 'USA'],
];
Parameters
string $fieldName

Name attribute of the SELECT

iterable $options optional

Array of the OPTION elements (as 'value'=>'Text' pairs) to be used in the SELECT element

array<string, mixed> $attributes optional

The HTML attributes of the select element.

Returns
string
See Also
\Cake\View\Helper\FormHelper::multiCheckbox() for creating multiple checkboxes.
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-select-pickers

setConfig() ¶ public

setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this

Sets the config.

Usage

Setting a specific value:

$this->setConfig('key', $value);

Setting a nested value:

$this->setConfig('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->setConfig(['one' => 'value', 'another' => 'value']);
Parameters
array<string, mixed>|string $key

The key to set, or a complete array of configs.

mixed|null $value optional

The value to set.

bool $merge optional

Whether to recursively merge or overwrite existing config, defaults to true.

Returns
$this
Throws
Cake\Core\Exception\CakeException
When trying to set a key that is invalid.

setRequiredAndCustomValidity() ¶ protected

setRequiredAndCustomValidity(string $fieldName, array<string, mixed> $options): array<string, mixed>

Set required attribute and custom validity JS.

Parameters
string $fieldName

The name of the field to generate options for.

array<string, mixed> $options

Options list.

Returns
array<string, mixed>

setTemplates() ¶ public

setTemplates(array<string> $templates): $this

Sets templates to use.

Parameters
array<string> $templates

Templates to be added.

Returns
$this

setValueSources() ¶ public

setValueSources(array<string>|string $sources): $this

Sets the value sources.

You need to supply one or more valid sources, as a list of strings. Order sets priority.

Parameters
array<string>|string $sources

A string or a list of strings identifying a source.

Returns
$this
Throws
InvalidArgumentException
If sources list contains invalid value.
See Also
FormHelper::$supportedValueSources for valid values.

setWidgetLocator() ¶ public

setWidgetLocator(Cake\View\Widget\WidgetLocator $instance): $this

Set the widget locator the helper will use.

Parameters
Cake\View\Widget\WidgetLocator $instance

The locator instance to set.

Returns
$this

submit() ¶ public

submit(string|null $caption = null, array<string, mixed> $options = []): string

Creates a submit button element. This method will generate <input> elements that can be used to submit, and reset forms by using $options. image submits can be created by supplying an image path for $caption.

Options

  • type - Set to 'reset' for reset inputs. Defaults to 'submit'
  • templateVars - Additional template variables for the input element and its container.
  • Other attributes will be assigned to the input element.
Parameters
string|null $caption optional

The label appearing on the button OR if string contains :// or the extension .jpg, .jpe, .jpeg, .gif, .png use an image if the extension exists, AND the first character is /, image is relative to webroot, OR if the first character is not /, image is relative to webroot/img.

array<string, mixed> $options optional

Array of options. See above.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-buttons-and-submit-elements

templater() ¶ public

templater(): Cake\View\StringTemplate

Returns the templater instance.

Returns
Cake\View\StringTemplate

text() ¶ public @method

text(string $fieldName, array $options = []): string

Creates input of type text.

Parameters
string $fieldName
array $options optional
Returns
string

textarea() ¶ public

textarea(string $fieldName, array<string, mixed> $options = []): string

Creates a textarea widget.

Options:

  • escape - Whether the contents of the textarea should be escaped. Defaults to true.
Parameters
string $fieldName

Name of a field, in the form "modelname.fieldname"

array<string, mixed> $options optional

Array of HTML attributes, and special options above.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-textareas

time() ¶ public

time(string $fieldName, array<string, mixed> $options = []): string

Generate an input tag with type "time".

Options:

See dateTime() options.

Parameters
string $fieldName

The field name.

array<string, mixed> $options optional

Array of options or HTML attributes.

Returns
string

unlockField() ¶ public

unlockField(string $name): $this

Add to the list of fields that are currently unlocked.

Unlocked fields are not included in the form protection field hash.

Parameters
string $name

The dot separated name for the field.

Returns
$this

validateValueSources() ¶ protected

validateValueSources(array<string> $sources): void

Validate value sources.

Parameters
array<string> $sources

A list of strings identifying a source.

Returns
void
Throws
InvalidArgumentException
If sources list contains invalid value.

widget() ¶ public

widget(string $name, array $data = []): string

Render a named widget.

This is a lower level method. For built-in widgets, you should be using methods like text, hidden, and radio. If you are using additional widgets you should use this method render the widget without the label or wrapping div.

Parameters
string $name

The name of the widget. e.g. 'text'.

array $data optional

The data to render.

Returns
string

year() ¶ public

year(string $fieldName, array<string, mixed> $options = []): string

Returns a SELECT element for years

Attributes:

  • empty - If true, the empty select option is shown. If a string, that string is displayed as the empty element.
  • order - Ordering of year values in select options. Possible values 'asc', 'desc'. Default 'desc'
  • value The selected value of the input.
  • max The max year to appear in the select element.
  • min The min year to appear in the select element.
Parameters
string $fieldName

The field name.

array<string, mixed> $options optional

Options & attributes for the select elements.

Returns
string
Links
https://book.cakephp.org/4/en/views/helpers/form.html#creating-year-inputs

Property Detail

$Html ¶ public @property

Type
Cake\View\Helper\HtmlHelper

$Url ¶ public @property

Type
Cake\View\Helper\UrlHelper

$_View ¶ protected

The View instance this helper is attached to

Type
Cake\View\View

$_config ¶ protected

Runtime config

Type
array<string, mixed>

$_configInitialized ¶ protected

Whether the config property has already been configured with defaults

Type
bool

$_context ¶ protected

Context for the current form.

Type
Cake\View\Form\ContextInterface|null

$_contextFactory ¶ protected

Context factory.

Type
Cake\View\Form\ContextFactory|null

$_defaultConfig ¶ protected

Default config for the helper.

Type
array<string, mixed>

$_defaultWidgets ¶ protected

Default widgets

Type
array<string, array<string>>

$_groupedInputTypes ¶ protected

Grouped input types.

Type
array<string>

$_helperMap ¶ protected

A helper lookup table used to lazy load helper objects.

Type
array<string, array>

$_idPrefix ¶ protected

Prefix for id attribute.

Type
string|null

$_idSuffixes ¶ protected

A list of id suffixes used in the current rendering.

Type
array<string>

$_lastAction ¶ protected

The action attribute value of the last created form. Used to make form/request specific hashes for form tampering protection.

Type
string

$_locator ¶ protected

Locator for input widgets.

Type
Cake\View\Widget\WidgetLocator

$_templater ¶ protected

StringTemplate instance.

Type
Cake\View\StringTemplate|null

$_valueSources ¶ protected

The default sources.

Type
array<string>

$formProtector ¶ protected

Form protector

Type
Cake\Form\FormProtector|null

$helpers ¶ protected

Other helpers used by FormHelper

Type
array

$requestType ¶ public

Defines the type of form being created. Set by FormHelper::create().

Type
string|null

$supportedValueSources ¶ protected

The supported sources that can be used to populate input values.

context - Corresponds to ContextInterface instances. data - Corresponds to request data (POST/PUT). query - Corresponds to request's query string.

Type
array<string>
OpenHub
Pingping
Linode
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Reporting Security Issues
  • Privacy Policy
  • Logos & Trademarks
  • Community
  • Get Involved
  • Issues (Github)
  • Bakery
  • Featured Resources
  • Training
  • Meetups
  • My CakePHP
  • CakeFest
  • Newsletter
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • Help & Support
  • Forum
  • Stack Overflow
  • IRC
  • Slack
  • Paid Support

Generated using CakePHP API Docs