0

我有一个名为 Task 的实体,并为表单构建了一个 Symfony TaskType.php。我的目标是默认将 endDate 日期时间字段设置为 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(),

    ));

例外:

使用参数 {"1":"test","2":"2013-03-30 00:00: 执行'INSERT INTO Task (name, startDate, endDate) VALUES (?, ?, ?)' 时发生异常00","3":null}:

SQLSTATE [23000]:违反完整性约束:1048 列 'endDate' 不能为空 500 内部服务器错误 - DBALException 1 链接异常:

PDOException »
4

2 回答 2

3

是的,当然它不起作用。我建议阅读有关表单的工作原理,如果您没有时间可以阅读此“备忘单” - 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());

希望能帮助到你。

于 2013-03-24T21:24:08.063 回答
0

您还可以在实例化实体类时设置它的值:

class Task
{
    protected $startDate;
    protected $endDate;

    public function __construct($startDate)
    {
        $this->startDate = $startDate;
        $this->endDate = $startDate;
    }
}
于 2013-03-27T01:20:42.033 回答