Ошибка значение не должно быть пустым

Я не могу воспроизвести эту ошибку ни на другом сервере, ни в своей среде разработки…

Проблема может исходить от валидатора, но я не уверен, является ли это ошибкой symfony или доктриной.

Данные POST идентичны на рабочем сервере и в среде разработки:

report_selection[iFrame]: 1
report_selection[dteFrom]: 2023-01-30 07:00
report_selection[dteTo]: 2023-01-31 07:00 
report_selection[reportType]: 1
report_selection[size]: 200
report_selection[product]: 1
report_selection[submit]:

Я предполагаю, что пустое поле submit не является проблемой, поскольку другие формы работают нормально, если одно и то же поле пусто.

Структура базы данных одинакова на всех серверах.

Вот код формы:

   public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $bDisplaySize = $options['bDisplaySize'];
        $bDisplayReportType = $options['bDisplayReportType'];
        $bDisplayProduct = $options['bDisplayProduct'];
        $defaultValue = $options['defaultValue'];
        $em = $options['entity_manager'];

        list($H, $m) = explode(":", $iShiftStart);
        $initialFromDate = (new DateTime())->modify('-'.$H.' hour');
        $initialFromDate = $initialFromDate->modify('-1 day');
        $initialFromDate->setTime((int)$iShiftStart, (int)$m, 0);
        $initialToDate = clone $initialFromDate;
        $initialToDate = $initialToDate->modify('+1 day');


        $builder->add(
            'iFrame',
            ChoiceType::class,
            array(
                'label' => 'master.preselection',
                'choices' => [
                    'master.yesterday' => false,
                    'master.today' => false,
                    'master.thisWeek' => false,
                    'master.lastWeek' => false,
                    'master.thisMonth' => false,
                    'master.lastMonth' => false,
                    'master.memomryDate' => false,
                ],
                'attr' => ['onchange' => 'refreshPreselectedChoices()'],
                'choice_attr' => [
                    'master.yesterday' => [],
                    'master.today' => ['selected' => 'selected'],
                    'master.thisWeek' => [],
                    'master.lastWeek' => [],
                    'master.thisMonth' => [],
                    'master.lastMonth' => [],
                    'master.memomryDate' => ['disabled' => true],
                ],

            )
        );

        $builder->add(
            'dteFrom',
            TextType::class,
            array(
                'label' => 'form.from',
                'data' => $initialFromDate->format('Y-m-d H:i'),
                'attr' => array(
                    'style' => 'width:150px;',
                    'oninput' => 'dteFromToCustom()',
                    'onchange' => 'dteFromToCustom()',
                ),
            )
        );

        $builder->add(
            'dteTo',
            TextType::class,
            array(
                'label' => 'form.to',
                'data' => $initialToDate->format('Y-m-d H:i'),
                'attr' => array(
                    'label' => 'form.to',
                    'style' => 'width:150px;',
                    'oninput' => 'dteFromToCustom()',
                    'onchange' => 'dteFromToCustom()',
                ),
            )
        );

        if ($bDisplayReportType) {
            $builder->add(
                'reportType',
                ChoiceType::class,
                array(
                    'label' => 'summaryReport.data',
                    'choices' => array(
                        'summaryReport.type1' => '1',
                        'summaryReport.type2' => '2',
                    ),
                )
            );
        }

        if ($bDisplaySize) {
            $builder->add(
                'size',
                EntityType::class,
                array(
                    'class' => ProductsSizeSpecs::class,
                    'choice_label' => 'rSize',
                    'choice_value' => 'rSize',
                    'placeholder' => '',
                    'label' => 'form.size',
                    'required' => false,
                    'mapped' => false,
                    'query_builder' => function (EntityRepository $er) {
                        return $er->createQueryBuilder('e')
                            ->groupBy('e.rSize')
                            ->orderBy('e.rSize', 'ASC');
                    },

                )
            );
        }

        if ($bDisplayProduct) {
            $builder->add(
                'product',
                EntityType::class,
                array(
                    'class' => Products::class,
                    'choice_label' => 'sNumber',
                    'choice_value' => 'sNumber',
                    'placeholder' => '',
                    'label' => 'master.product',
                    'required' => false,
                    'query_builder' => function (EntityRepository $er) {
                        return $er->createQueryBuilder('e')
                            ->groupBy('e.sNumber')
                            ->orderBy('e.sNumber', 'ASC');
                    },

                )
            );
        }

        $builder->add(
            'submit',
            SubmitType::class,
            array(
                'label' => 'form.submit',
                'attr' => array('class' => 'btn btn-primary'),
            )
        );
    }

Другие формы используют точно такой же код с большим или меньшим количеством опций.

Я ищу способ отладить это на рабочем сервере (список/дамп «пустых» полей?).

Любой намек будет оценен, спасибо!

3 / 3 / 2

Регистрация: 21.04.2014

Сообщений: 216

1

Запись не верна: значение поля не может быть пустым

03.08.2016, 10:55. Показов 30191. Ответов 4


Студворк — интернет-сервис помощи студентам

Конфа erp 2.1. Не проводится документ Заказ давальца.

Ошибка:
запись не верна значение поле Код Строки не может быть пустым!( регистр накопления Услуги давальцу к оформлению Номер строки 1)



0



3 / 3 / 2

Регистрация: 21.04.2014

Сообщений: 216

03.08.2016, 11:20

 [ТС]

2

через отладчик смотрел , ошибка вылазиет на строке

Результат = Форма.Записать(ПараметрыЗаписи);

{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1137)}: Ошибка при вызове метода контекста (Записать)
Результат = Форма.Записать(ПараметрыЗаписи);
по причине:
Запись не верна! Значение поля «Код строки» не может быть пустым! (Регистр накопления: Услуги давальцу к оформлению; Номер строки: 1)

Миниатюры

Запись не верна: значение поля не может быть пустым
 



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

03.08.2016, 16:46

3

Цитата
Сообщение от juristbrn
Посмотреть сообщение

Запись не верна! Значение поля «Код строки» не может быть пустым!

Мне кажется ключевое не отладка, а вот это сообщение! =)))



0



3 / 3 / 2

Регистрация: 21.04.2014

Сообщений: 216

04.08.2016, 07:02

 [ТС]

4

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



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

04.08.2016, 11:12

5

juristbrn, начать с того, что нужно понять из какого события растут ноги. Ставим отладку — остановку по ошибке — открываем стек вызовов и смотрим что там написано



0



  1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

Сообщение формы «Данное значение не должно быть пустым»

Главные вкладки

  • Просмотр(активная вкладка)
  • Реакции

При отправке контактной формы постоянно выскакивает сообщение об ошибке: «Данное значение не должно быть пустым». Все поля заполнены, какое-такое данное… Кто-нибудь сталкивался с такой проблемой?

  • Drupal8
  • Есть вопрос
  • Решение проблем
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Лучший ответ

Аватар пользователя pingvin156
pingvin156


12 декабря 2018 в 19:55




Оказалось причина вот в чем: было ранее добавлено поле «файл» (обязательное), но потом alter_form удалено. Сделал необязательным, заработало

Комментарии

Аватар пользователя ivnish
ivnish


12 декабря 2018 в 15:48




Скрытых с помощью CSS полей нет?

Аватар пользователя pingvin156
pingvin156


12 декабря 2018 в 16:14




Нет. Есть изображение необязательное

Аватар пользователя pingvin156
pingvin156


12 декабря 2018 в 19:55




Оказалось причина вот в чем: было ранее добавлено поле «файл» (обязательное), но потом alter_form удалено. Сделал необязательным, заработало

у меня есть Phone класс и Country класс в проекте Symfony 2.8.
Одно из полей Phone класс $country который является Country объект.

У меня также есть форма с полем EntityType, которую я использую для выбора из списка стран в моей базе данных.

Моя проблема заключается в том, что когда я выбираю страну из выпадающего меню, созданного в поле EntityType, и отправляю форму, я получаю сообщение об ошибке «Это значение не должно быть пустым». несколько раз над выпадающим меню EntityField.

Что странно, что я делаю dump($phone) после $form->handleRequest($request); и поле $ country показывает правильный объект Country, выбранный из базы данных.

Это происходит только тогда, когда @AssertValid() ограничение на $country поле. Как только я уберу это, ошибка исчезнет.
Дело в том, что я хочу продолжать проверять поле страны моего Phone учебный класс.

Любые идеи о том, почему это происходит, будет принята с благодарностью!

Phone учебный класс:

namespace AppBundleEntity;

use DoctrineORMMapping as ORM;
use SymfonyComponentValidatorConstraints as Assert;

/**
* Phone
*
* @ORMTable(name="phones", uniqueConstraints={@ORMUniqueConstraint(name="natural_pk", columns={"phone_name", "country_id", "phone_number", "extension"})})
* @ORMEntity(repositoryClass="AppBundleRepositoryPhoneRepository")
* @ORMHasLifecycleCallbacks
*/
class Phone
{
/**
* @var int
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*
* @AssertType(type="int")
*/
protected $id;

/**
* @var Country
*
* @ORMManyToOne(targetEntity="Country")
* @ORMJoinColumn(nullable=false)
*
* @AssertNotBlank()
* @AssertValid()
*/
protected $country;

/**
* @var string
*
* @ORMColumn(name="phone_number", type="string", length=20, nullable=false)
*
* @AssertNotBlank()
* @AssertType(type="string")
* @AssertLength(max=20)
*/
protected $phoneNumber;

public function __toString()
{
return $this->phoneNumber;
}

/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}

/**
* Set phoneNumber
*
* @param string $phoneNumber
*
* @return Phone
*/
public function setPhoneNumber($phoneNumber)
{
$this->phoneNumber = $phoneNumber;

return $this;
}

/**
* Get phoneNumber
*
* @return string
*/
public function getPhoneNumber()
{
return $this->phoneNumber;
}

/**
* Set country
*
* @param AppBundleEntityCountry $country
*
* @return Phone
*/
public function setCountry(AppBundleEntityCountry $country)
{
$this->country = $country;

return $this;
}

/**
* Get country
*
* @return AppBundleEntityCountry
*/
public function getCountry()
{
return $this->country;
}
}

Класс страны:

namespace AppBundleEntity;

use DoctrineORMMapping as ORM;
use SymfonyComponentValidatorConstraints as Assert;

/**
* Country
*
* @ORMTable(name="countries")
* @ORMEntity(repositoryClass="AppBundleRepositoryCountryRepository")
*/
class Country
{
/**
* @var int
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*
* @AssertType(type="int")
*/
protected $id;

/**
* @var string
*
* @ORMColumn(name="country_name", type="string", length=255, nullable=false)
*
* @AssertNotBlank()
* @AssertType(type="string")
* @AssertLength(max=255)
*/
protected $countryName;

/**
* @var string
*
* @ORMColumn(name="phone_code", type="string", length=10, nullable=false)
*
* @AssertNotBlank()
* @AssertType(type="string")
* @AssertLength(max=10)
*/
protected $phoneCode;

public function __toString()
{
return $this->phoneCode;
}

/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}

/**
* Set countryName
*
* @param string $countryName
*
* @return Country
*/
public function setCountryName($countryName)
{
$this->countryName = $countryName;

return $this;
}

/**
* Get countryName
*
* @return string
*/
public function getCountryName()
{
return $this->countryName;
}

/**
* Set phoneCode
*
* @param string $phoneCode
*
* @return Country
*/
public function setPhoneCode($phoneCode)
{
$this->phoneCode = $phoneCode;

return $this;
}

/**
* Get phoneCode
*
* @return string
*/
public function getPhoneCode()
{
return $this->phoneCode;
}
}

1

Решение

Я наконец нашел решение проблемы.
Оказывается, мой Country класс на самом деле имеет другое поле из двунаправленной ассоциации под названием $provinces и это поле имеет Valid() ограничение также:

/**
* @var Province[]
*
* @ORMOneToMany(targetEntity="Province", mappedBy="country")
*
* @AssertValid()
*/
protected $provinces;

Это было причиной ошибки, я думаю, потому что если $provinces пустой массив, Country объект не выполняет Symfony’s Valid() ограничение.

Чтобы решить эту проблему, мне пришлось либо удалить Valid() ограничение на $provinces поле в классе Country или на $country поле в Phone учебный класс.

0

Другие решения

Вы можете отключить проверку, указав несуществующую группу проверки в типе формы:

/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['validation_groups' => ['no-validation']]); // Do not validate entities.
}

Не нашел лучшего решения: /

0

I am using the DynamoDB as storage. When I try to get an access token with grant_type ‘client_credentials’ or ‘password’, I get the «The value must not be empty» error message. I traced the error down to the ‘setAccessToken’ function of DynamodDB

bshafferoauth2-server-phpsrcOAuth2StorageDynamoDB.php

 public function setAccessToken($access_token, $client_id, $user_id, $expires, $scope = null)
    {
        // convert expires to datestring
        $expires = date('Y-m-d H:i:s', $expires);

        $clientData = compact('access_token', 'client_id', 'user_id', 'expires', 'scope');
        $clientData = array_filter($clientData, function ($value) { return !is_null($value); });

        $result = $this->client->putItem(array(
            'TableName' =>  $this->config['access_token_table'],
            'Item' => $this->client->formatAttributes($clientData)
        ));

        return true;

    }

It seems DynamoDB bombs out when i try to save an item with an attribute having an empty value.

It works if i replace «!is_null($value)» with «!empty($value) line 174

$clientData = array_filter($clientData, function ($value) { return !empty($value); });

Same error when refreshing tokens,

public function setRefreshToken($refresh_token, $client_id, $user_id, $expires, $scope = null)
    {
        // convert expires to datestring
        $expires = date('Y-m-d H:i:s', $expires);

        $clientData = compact('refresh_token', 'client_id', 'user_id', 'expires', 'scope');
        $clientData = array_filter($clientData, function ($value) { return !is_null($value); });

        $result = $this->client->putItem(array(
            'TableName' =>  $this->config['refresh_token_table'],
            'Item' => $this->client->formatAttributes($clientData)
        ));

        return true;
    }

Is there a better solution/workaround this? Thanks.

Понравилась статья? Поделить с друзьями:
  • Ошибка значение не было найдено в справочнике
  • Ошибка и ее уголовно правовое значение кратко
  • Ошибка и ее значение шпаргалка
  • Ошибка значение должно быть целым числом mathcad
  • Ошибка значение должно быть установлено