如何在Symfony表单中添加引导程序日期时间选择器

yhuiod9q  于 2022-11-16  发布在  其他
关注(0)|答案(3)|浏览(137)

我尝试在Symfony表单中使用http://eonasdan.github.io/bootstrap-datetimepicker/
我又道:

<link type="text/css" rel="stylesheet" href="{{ asset('assets/css/bootstrap-datetimepicker-standalone.min.css') }}">
<link type="text/css" rel="stylesheet" href="{{ asset('assets/css/bootstrap.min.css') }}">

<script type="text/javascript" charset="utf8" src="{{ asset('assets/js/jquery-3.1.1.min.js') }}"></script>
<script type="text/javascript" charset="utf8" src="{{ asset('assets/js/moment.min.js') }}"></script>
<script type="text/javascript" charset="utf8" src="{{ asset('assets/js/bootstrap.min.js') }}"></script>
<script type="text/javascript" charset="utf8" src="{{ asset('assets/js/bootstrap-datetimepicker.min.js') }}"></script>

但现在我不确定如何更改表单类型以使用日期选择器
我试过这种方法,但没有用

->add('date', DateTimeType::class, array(
'required' => true,
'widget' => 'single_text',
'attr' => [
    'class' => 'form-control input-inline datetimepicker',
    'data-provide' => 'datetimepicker',
    'html5' => false,
],
))

有人能帮帮我吗?

zkure5ic

zkure5ic1#

您应该将html5键/值从attr移至options:

->add('date', DateTimeType::class, array(
'required' => true,
'widget' => 'single_text',
'html5' => false,
'attr' => [
    'class' => 'form-control input-inline datetimepicker',
    'data-provide' => 'datetimepicker',
],
))
ijnw1ujt

ijnw1ujt2#

我也遇到了同样的问题。Symfony的默认表单组件呈现了另一组输入字段。
bootstrap方法需要一个“普通”输入字段,其中的DateTime呈现为字符串。因此,您必须使用TextType::class为了在实体中使用DateTime,我添加了一个EntityTransformer来处理字符串和DateTime之间的转换,以便进行读写操作。
您可以这样做:

$builder->get( 'from' )->addModelTransformer( new CallbackTransformer(
    function ( $date ) {
        return $date->format( 'd.m.Y H:i' );
    },
    function ( $date ) {
        return new \DateTime( $date );
    }
) );
2w3rbyxf

2w3rbyxf3#

我不确定这是否是唯一的问题,但您可能需要将DateTimeType::class更改为texttype::class。
希望这能帮上忙!祝你好运

相关问题