FormType входное значение по умолчанию в той же форме

У меня есть объект с именем Task и я создаю Symfony TaskType.php для формы. Моя цель состоит в том, чтобы установить поле даты и времени endDate по умолчанию для ввода поля datime startDate (которое является обязательным).

Я пробовал это, но это не работает.

$builder->add('name');
    $builder->add('startDate', 'datetime');
    $builder->add('endDate', 'datetime', array(
        'empty_value' => array('year' => 'Year', 'month' => 'Month', 'day' => 'Day'),
        'required' => false,
        'data' => isset($options['data']) ? $options['data']->getEndDate() : $options['data']->getStartDate(),

    ));

Исключение:

Возникла исключительная ситуация при выполнении 'INSERT INTO Task (name, startDate, endDate) VALUES (?,?,?)' С параметрами {"1":"test","2":"2013-03-30 00:00:00","3": нулевая}:

SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец "endDate" не может быть пустым. 500 Внутренняя ошибка сервера - связано с DBALException 1 Исключение:

PDOException »

2 ответа

Да, конечно, это не работает. Я рекомендую прочитать о том, как работает форма, если у вас нет времени, вы можете просто прочитать эту "шпаргалку" - http://blog.stfalcon.com/wp-content/uploads/2012/01/how_symfony2_forms_works.pdf.

Вы можете установить значение после того, как данные были установлены. Например, попробуйте:

$form->bindRequest($request); 
// now you can get data and set 
$form->get('endDate')->setData($form->get('startDate')->getData());

Надеюсь, поможет.

Вы также можете установить значения в своем классе сущности, когда он создается:

class Task
{
    protected $startDate;
    protected $endDate;

    public function __construct($startDate)
    {
        $this->startDate = $startDate;
        $this->endDate = $startDate;
    }
}
Другие вопросы по тегам