2

フォームの埋め込みコレクションに行き詰まっています。

name、begin、end の 3 つのフィールドで構成される Holiday フォームがあります。begin と end は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 に答える