Elements

Number

Laminas\Form\Element\Number is meant to be paired with the FormNumber helper for HTML5 inputs with type "number". This element adds filters and validators to its input filter specification in order to validate HTML5 number input values on the server.

Basic Usage

This element automatically adds a type attribute of value number.

use Laminas\Form\Element;
use Laminas\Form\Form;

$number = new Element\Number('quantity');
$number->setLabel('Quantity');
$number->setAttributes([
    'min'  => '0',
    'max'  => '10',
    'step' => '1', // default step interval is 1
]);

$form = new Form('my-form');
$form->add($number);

Using array notation:

use Laminas\Form\Element;
use Laminas\Form\Form;

$form = new Form('my-form');
$form->add([
    'type' => Element\Number::class,
    'name' => 'quantity',
    'options' => [
        'label' => 'Quantity',
    ],
    'attributes' => [
        'min' => '0',
        'max' => '10',
        'step' => '1', // default step interval is 1
    ],
]);

Set all attributes before calling prepare

The min, max, and step attributes should be set prior to calling Laminas\Form::prepare(). Otherwise, the default input specification for the element may not contain the correct validation rules.

Public Methods

The following methods are specific to the Number element; all other methods defined by the parent Element class are also available.

Method signature Description
getInputSpecification() : array Returns a input filter specification, which includes Laminas\Filter\StringTrim and will add the appropriate validators based on the values from the min, max, and step attributes. See below for specifics.

getInputSpecification() will behave as follows based on the attributes provided:

  • If the min attribute is set, a Laminas\Validator\GreaterThan validator will be added to ensure the number value is greater than the minimum value. The min value should be a valid floating point number.
  • If the max attribute is set, a Laminas\Validator\LessThan validator will be added to ensure the number value is less than the maximum value. The max value should be a valid floating point number.
  • If the step attribute is set to "any", step validations will be skipped. Otherwise, a Laminas\Validator\Step validator will be added to ensure the number value is within a certain interval (default is 1). The step value should be either "any" or a valid floating point number.