РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
33 of 274 menu

Директива wire:model.number

Директива wire:model.number является модификатором стандартной директивы wire:model. Она автоматически преобразует строковое значение из инпута в число перед сохранением в свойство компонента Livewire. Это полезно при работе с полями, которые должны содержать числовые данные (например, возраст, цена, количество).

Директива вешается на элементы ввода (input, textarea) и принимает имя свойства компонента в качестве значения. В отличие от обычного wire:model, который сохраняет строки, модификатор .number приводит данные к типу float.

Синтаксис

<input type="text" wire:model.number="propertyName">

Пример

Пусть в компоненте есть свойство $num со значением 0. Сделаем инпут, который будет обновлять это свойство через директиву wire:model.number, и выведем текущее значение с проверкой типа данных:

<?php namespace AppLivewire; use LivewireComponent; class NumberExample extends Component { public $num = 0; public function render() { return view('livewire.number-example'); } } ?>
<div> <input type="text" wire:model.number="num"> <p>Значение: {{ $num }}</p> <p>Тип: {{ gettype($num) }}</p> </div>

Если ввести в поле число 42, то свойство $num станет числом 42, а не строкой '42':

<input type="text"> <p>Значение: 42</p> <p>Тип: integer</p>

Пример

Создадим простой калькулятор, где два поля ввода связаны с числовыми свойствами через wire:model.number, а третье поле отображает их сумму в реальном времени:

<?php namespace AppLivewire; use LivewireComponent; class Calculator extends Component { public $a = 0; public $b = 0; public function getSumProperty() { return $this->a + $this->b; } public function render() { return view('livewire.calculator'); } } ?>
<div> <input type="text" wire:model.number="a" placeholder="Число A"> <input type="text" wire:model.number="b" placeholder="Число B"> <p>Сумма: {{ $this->getSumProperty() }}</p> </div>

При вводе чисел в поля результат вычисляется автоматически, так как Livewire обновляет компонент при каждом изменении поля ввода:

<input type="text" placeholder="Число A"> <input type="text" placeholder="Число B"> <p>Сумма: 15</p>

Пример

Если пользователь вводит нечисловое значение, wire:model.number возвращает NaN (Not a Number). Покажем это на примере с проверкой через is_nan:

<?php namespace AppLivewire; use LivewireComponent; class NumberCheck extends Component { public $value = 0; public function render() { return view('livewire.number-check'); } } ?>
<div> <input type="text" wire:model.number="value"> <p>Значение: {{ $value }}</p> <p>is_nan: {{ is_nan($value) ? 'true' : 'false' }}</p> </div>

При вводе текста 'abc' свойство $value станет равным NaN, а проверка is_nan вернёт true:

<input type="text"> <p>Значение: NAN</p> <p>is_nan: true</p>

Смотрите также

  • директиву wire:model,
    которая связывает поле ввода со свойством компонента
  • директиву wire:model.boolean,
    которая преобразует значение в булев тип
  • директиву wire:model.live,
    которая обновляет свойство при каждом изменении
  • директиву wire:blur,
    которая вызывает метод при потере фокуса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить