Php FormType同一表单中的默认输入值

Php FormType同一表单中的默认输入值,php,forms,symfony,symfony-2.2,Php,Forms,Symfony,Symfony 2.2,我有一个名为Task的实体,并为表单构建了一个Symfony TaskType.php。 我的目标是在默认情况下将endDate datetime字段设置为startDate DatTime字段的输入(这是必需的) 我试过了,但没用 $builder->add('name'); $builder->add('startDate', 'datetime'); $builder->add('endDate', 'datetime', array( '

我有一个名为Task的实体,并为表单构建了一个Symfony TaskType.php。 我的目标是在默认情况下将endDate datetime字段设置为startDate DatTime字段的输入(这是必需的)

我试过了,但没用

$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:00”、“3”:null}执行“插入到任务(名称、开始日期、结束日期)值(?、、?)”时发生异常:

SQLSTATE[23000]:完整性约束冲突:1048列“endDate”不能为空 500内部服务器错误-DBALException 1链接例外:


是的,当然不行了。我建议你们阅读一下表单是如何工作的,若你们并没有时间,你们可以读一下这个“备忘单”

可以在设置数据后设置值。例如,尝试:

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

希望有帮助。

是的,当然不行了。我建议你们阅读一下表单是如何工作的,若你们并没有时间,你们可以读一下这个“备忘单”

可以在设置数据后设置值。例如,尝试:

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

在实例化实体类时,还可以在实体类中设置值:

class Task
{
    protected $startDate;
    protected $endDate;

    public function __construct($startDate)
    {
        $this->startDate = $startDate;
        $this->endDate = $startDate;
    }
}

你能比“它不起作用”更具体一点吗?它怎么不起作用?错误消息,意外行为?不幸的是,我们中的大多数人没有原力的帮助来理解像这样的神秘错误描述:)是的,当然,sry。我编辑了这篇文章,但有一个例外。嗯,在错误信息中有你的答案。您试图在不允许包含null的列中插入null值。是的,但我不知道如何将startDate数据检索到endDate数据。您能比“它不工作”更具体一点吗?它怎么不起作用?错误消息,意外行为?不幸的是,我们中的大多数人没有原力的帮助来理解像这样的神秘错误描述:)是的,当然,sry。我编辑了这篇文章,但有一个例外。嗯,在错误信息中有你的答案。您试图在不允许包含null的列中插入null值。是的,但我不知道如何将startDate数据检索到endDate数据中。谢谢,但当我转到Route addTask时,我得到了“Task\AppBundle\Entity\Task::\uu构造函数缺少参数1…”异常,因为他没有得到$startDate值,如何处理这个问题?例如,当我把$task=newtask(new\DateTime('NOW'))放进去时;在我的TaskController中,我可以打开addTask路由,但是当我将表单数据刷新到数据库时,endDate只有新的DateTime值,而不是releaseDate表单数据谢谢,但是当我转到我的路由addTask时,我得到“Task\AppBundle\Entity\Task:缺少参数1:\uu构造函数…”异常,因为他没有得到$startdate值,如何处理它?当我把$task=new task(new\DateTime('NOW'))作为例子时;在我的TaskController中,我可以打开addTask路由,但是当我将表单数据刷新到数据库时,endDate只有新的DateTime值,而不是releaseDate表单数据谢谢,但是当我在bindRequest之后设置数据时,我会得到一个“你不能更改绑定表单的数据”谢谢,但是当我在bindRequest之后设置数据时,我得到一个“您不能更改绑定表单的数据”