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;
}
}