Не удалось преобразовать значение PHP типа «целое» в тип «время» - PullRequest
0 голосов
/ 11 июля 2019

Я должен хранить часы и минуты. Поэтому в моих сущностях я объявляю тип «Время». Но когда я отправляю свою форму, я получаю сообщение об ошибке:

Не удалось преобразовать значение PHP '16200' типа 'integer' в тип 'time'. Ожидается один из следующих типов: null, DateTime

Моя сущность:

     /**
     *
     * @ORM\Column(type="time")
     */
    private $timeSupport;

     /**
     * @return mixed
     */
    public function getTimeSupport()
    {
        return $this->timeSupport;
    }

    /**
     * @param mixed $timeSupport
     */
    public function setTimeSupport($timeSupport)
    {
        $this->timeSupport = $timeSupport;
    }

My FormType:

->add('timeSupport', TimeType::class, array(
                  'input'  => 'timestamp',
                  'widget' => 'choice',
                  'minutes' => array("0"=>"0","15"=>"15","30"=>"30","45"=>"45"),
                  'label'  => 'Nombres d\'heures de support',
              ));

Вы знаете, откуда моя ошибка?

1 Ответ

1 голос
/ 12 июля 2019

Doctrine's Time Type использует PHP DateTime для обработки своих данных. Один из способов решения вашей проблемы - изменить поле ввода на datetime вместо timestamp:

->add('timeSupport', TimeType::class, array(
                  'input'  => 'datetime',
                  'widget' => 'choice',
                  'minutes' => array("0"=>"0","15"=>"15","30"=>"30","45"=>"45"),
                  'label'  => 'Nombres d\'heures de support',
              ));

Если указанное выше изменение невозможно в вашем случае, вы можете использовать Преобразователь данных для преобразования $timeSupport из DateTime в timestamp перед отображением формы и обратно в DateTime после Форма подачи.

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