Как объединить тип формы выбора с утверждением типа = целое число - PullRequest
0 голосов
/ 25 октября 2011

У меня есть поле под названием «наклон», которое принимает целые числа от 0 до 90 (градусов).
В утверждении assert я утверждаю, что тип должен быть целым числом.

В этом случае я хотел бы отобразить поле в качестве виджета выбора, раскрывающийся список со значениями в диапазоне от 0 до 90.
Однако я не могу найти способ сделать выбор целым числом. Каждый раз, когда я пытаюсь отправить форму, появляется сообщение об ошибке «это поле должно иметь тип Integer».

Есть ли способ:
разрешить сочетание раскрывающегося списка выбора и утверждения \ Type (type = "Integer")
работа

Определение свойства в сущности:

    /**
     * @ORM\Column(name="inclination", type="integer", nullable=true)
     * @Assert\NotBlank()
     * @Assert\Min(limit=0)
     * @Assert\Max(limit=90)
     * @Assert\Type(type="integer")
     */
    private $inclination;

Как создается поле в форме:

$builder->add('inclination', 'choice', array(
            'choices' => $this->getInclinationChoices(), 
            'empty_value' => 'Choose an option',
            ));

private function getInclinationChoices()
    {
        $choices = array();
        for($i=0; $i<= 90; $i++) {
            $choices[$i] = "$i °"; 
        }
        return $choices;
    }

1 Ответ

1 голос
/ 15 марта 2012

Не уверен, что это правильный подход Symfony 2, но не могли бы вы принудительно задать значение целочисленного типа PHP в методе setInclination() сущности?

Например:

public function setInclination($inclination)
{
    $this->inclination = (int) $inclination;
}

Iвоссоздал вашу проблему локально, и это исправление сработало для меня.

...