Symfony 4.2 проверяет пустые поля с плавающей точкой для объекта - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь написать валидатор для формы, которая имеет строковые и плавающие типы.Если я создаю новый объект, который не был сохранен в базе данных, все работает нормально.Но если я редактирую объект, который был сохранен в базе данных, и я устанавливаю пустое значение строки или числа с плавающей точкой, я получаю

Expected argument of type "float", null given at property path "price"

ошибок.

Обходной путь для строкового поля устанавливал

'empty_data' => '',

или создание преобразователя данных как такового

namespace App\Form\DataTransformer;

use Symfony\Component\Form\DataTransformerInterface;

class NullToEmptyTransformer implements DataTransformerInterface
{
/**
 * Does not transform anything
 *
 * @param  string|null $value
 * @return string
 */
public function transform($value)
{
    return $value;
}

/**
 * Transforms a null to an empty string.
 *
 * @param  string $value
 * @return string
 */
public function reverseTransform($value)
{
    if (is_null($value)) {
        return '';
    }

    return $value;
}
}

Но это не может быть применено к плавающему полю.Каково лучшее решение для проверки пустых полей с плавающей запятой, которые ранее имели значение в базе данных?

РЕДАКТИРОВАТЬ: я нашел решение.Проблема была в установщиках сущностей.Он ожидал только float, поэтому мне пришлось изменить тип параметра на? Float.

1 Ответ

0 голосов
/ 11 марта 2019

Почему бы не использовать Asserts для этого? Для начала нужно установить аннотации

 composer require symfony/validator doctrine/annotations

Если вы хотите использовать его на объекте, импортируйте его:

use Symfony\Component\Validator\Constraints as Assert;

А вот как вы должны использовать свойство объекта:

/**
 * @Assert\NotBlank
 * @Assert\Length(min=3)
 */
private $firstName;

Вот несколько примеров утверждений:

* @Assert\Type(type="string")

* @Assert\Type(type="float")

* @Assert\NotBlank()

Для получения дополнительной информации https://symfony.com/doc/current/validation.html#properties

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...