Skip to content

[3.0] [Form] Inconsistency between isValid() and the "valid" template variable #7737

Closed
@webmozart

Description

@webmozart

I'm calling out for you to decide how to resolve the inconsistency between the Form::isValid() method and the valid variable available in the template:

  • isValid() returns false if a form was not submitted. This way it is possible to write concise controller code:
$form = $this->createForm(...);
$form->handleRequest($request);

if ($form->isValid()) {
    // only executed if the form is submitted AND valid
}
  • valid contains true if a form was not submitted. This way it is possible to rely on this variable for error styling of a form.
<div{% if not form.vars.valid %} class="error"{% endif %}>

We have two alternatives for resolving this problem:

  1. Leave the inconsistency as is.
  2. Make isValid() return true if a form was not submitted (consistent with valid)
  3. Revert to the 2.2 behavior of throwing an exception if isValid() is called on a non-submitted form (not consistent with valid).

Both 2. and 3. will require additional code in the controller:

$form = $this->createForm(...);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
    // only executed if the form is submitted AND valid
}

What do you think?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions