2

我坚持使用嵌入的表单集合。

我有一个由三个字段组成的假期表单:名称、开始和结束。请注意,开始和结束由Bootstrap 日期时间选择器管理

假期表格

然后我有一个由一些字段和一组假期表组成的成绩表。添加或删除假期表格的 javascript 部分工作正常。

成绩从

正如您在此图像中看到的,开始和结束图标未显示。但这还不是全部,日期时间选择器不起作用。我发现 symfony 给出的数据原型不完整,缺少一些类。

我应该在我的类型中添加一个选项或其他内容以使其正常工作吗?

编辑 :

我的成绩类型:

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('name');
    $builder->add('campus', 'entity',
        [
        'class' => 'Ent\HomeBundle\Entity\Campus',
        'property' => 'name',
        'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($options) {
                $qb = $er->createQueryBuilder('c');
                if ($this->controller->getCurrentUser()->getGroup()->getRole() == 'ROLE_ADMIN') {
                    $qb->where($qb->expr()->in('c', ':campuses'))
                       ->setParameter('campuses', $this->controller->getCurrentUser()->getCampuses()->toArray());
                }
                return $qb;
            }
        ]
    );
    $builder->add('school', 'entity', [
        'class' => 'Ent\HomeBundle\Entity\School',
        'property' => 'name'
        ]
    );
    $builder->add('holidays', 'collection',
        [
        'type'         => new HolidayType($this->controller),
        'allow_add'    => true,
        'allow_delete' => true,
        'by_reference' => false
        ]
        );
}

我的假期类型:

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('name');
    $builder->add('begin', new DatePickerType(), ['help' => 'Only the day and the month will be used']);
    $builder->add('end', new DatePickerType(), [
        'required' => false,
        'help' => 'Only the day and the month will be used',
        ]
    );

     $builder->addEventListener(FormEvents::POST_BIND, array($this, 'isEndValid'));
}
4

1 回答 1

1

日期选择器不起作用,因为您通过 javascript 添加了日期选择器字段。你必须调用类似的东西

$('.datepicker').datetimepicker({
    format: 'dd/MM/yyyy hh:mm:ss'
});

当您从原型添加新行时。通过调用 .datetimepicker() 您可以为所选字段启用日期选择器。

关于缺少的类您必须发布 DatePickerType 的内容。

于 2013-09-16T15:53:24.310 回答