---
title: "Form ViewHelper <formvh:form>"
manual: "Fluid ViewHelper Reference"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3viewhelper:typo3-form-form@main"
source: "Form/Form.rst"
rendered: "2026-09-26T06:08:28+00:00"
---

# Form ViewHelper `<formvh:form>` {#typo3-form-form}

> [!NOTE]
> This ViewHelper is not available by default. It is only available if
> [`typo3/cms-form`](https://packagist.org/packages/typo3/cms-form) is installed and its namespace is imported.
>
> [Import its namespace](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Fluid/UsingFluidInTypo3.html#fluid-syntax-viewhelpers-import-namespaces)
> `{namespace formvh=TYPO3\CMS\Form\ViewHelpers\}` in the Fluid file or
> `xmlns:formvh="http://typo3.org/ns/TYPO3/CMS/Form/ViewHelpers/"` in the opening HTML tag.

Custom form ViewHelper that renders the form state instead of referrer fields

Scope: frontend

Go to the source code of this ViewHelper: [FormViewHelper.php (GitHub)](https://github.com/TYPO3/typo3/blob/main/typo3/sysext/form/Classes/ViewHelpers/FormViewHelper.php).

## Arguments of the `<formvh:form>` ViewHelper {#typo3-form-form-arguments}

> **Allows arbitrary arguments**
>
> This ViewHelper allows you to pass arbitrary arguments not defined below
> directly to the HTML tag created. This includes custom `data-` arguments.

-   **absolute**

    -   *Type:* bool
    -   *Default:* false

    If set, an absolute action URI is rendered (only active if $actionUri is not set)

-   **action**

    -   *Type:* string

    Target action

-   **actionUri**

    -   *Type:* string

    can be used to overwrite the "action" attribute of the form tag

-   **addQueryString**

    -   *Type:* string
    -   *Default:* false

    If set, the current query parameters will be kept in the URL. If set to "untrusted", then ALL query parameters will be added. Be aware, that this might lead to problems when the generated link is cached.

-   **additionalAttributes**

    -   *Type:* array

    Additional tag attributes. They will be added directly to the resulting HTML tag.

-   **additionalParams**

    -   *Type:* array
    -   *Default:* array (
    )

    additional action URI query parameters that won't be prefixed like $arguments (overrule $arguments) (only active if $actionUri is not set)

-   **arguments**

    -   *Type:* array
    -   *Default:* array (
    )

    Arguments (do not use reserved keywords "action", "controller" or "format" if not referring to these internal variables specifically)

-   **argumentsToBeExcludedFromQueryString**

    -   *Type:* array
    -   *Default:* array (
    )

    arguments to be removed from the action URI. Only active if $addQueryString = TRUE and $actionUri is not set

-   **aria**

    -   *Type:* array

    Additional aria-\* attributes. They will each be added with a "aria-" prefix.

-   **controller**

    -   *Type:* string

    Target controller

-   **data**

    -   *Type:* array

    Additional data-\* attributes. They will each be added with a "data-" prefix.

-   **extensionName**

    -   *Type:* string

    Target Extension Name (without \`tx\_\` prefix and no underscores). If NULL the current extension name is used

-   **fieldNamePrefix**

    -   *Type:* string

    Prefix that will be added to all field names within this form. If not set the prefix will be tx_yourExtension_plugin

-   **format**

    -   *Type:* string
    -   *Default:* ''

    The requested format (e.g. ".html") of the target page (only active if $actionUri is not set)

-   **hiddenFieldClassName**

    -   *Type:* string

    hiddenFieldClassName

-   **method**

    -   *Type:* string
    -   *Default:* 'post'

    Transfer type (get or post)

-   **name**

    -   *Type:* string

    Name of form

-   **noCache**

    -   *Type:* bool
    -   *Default:* false

    set this to disable caching for the target page. You should not need this.

-   **novalidate**

    -   *Type:* bool

    Indicate that the form is not to be validated on submit.

-   **object**

    -   *Type:* mixed

    Object to use for the form. Use in conjunction with the "property" attribute on the sub tags

-   **objectName**

    -   *Type:* string

    name of the object that is bound to this form. If this argument is not specified, the name attribute of this form is used to determine the FormObjectName

-   **pageType**

    -   *Type:* int
    -   *Default:* 0

    Target page type

-   **pageUid**

    -   *Type:* int

    Target page uid

-   **pluginName**

    -   *Type:* string

    Target plugin. If empty, the current plugin name is used

-   **requestToken**

    -   *Type:* mixed

    whether to add that request token to the form

-   **section**

    -   *Type:* string
    -   *Default:* ''

    The anchor to be added to the action URI (only active if $actionUri is not set)

-   **signingType**

    -   *Type:* string

    which signing type to be used on the request token (falls back to "nonce")
