【问题标题】:symfony 3 : "this value is Not valide"symfony 3:“这个值无效”
【发布时间】:2016-08-16 02:37:01
【问题描述】:

当我使用 jquery 从日历中插入日期时遇到问题!我认为存在转换问题。 二、尝试使用

{{ form_widget(form.dateArrivage|date("m/d/Y") , {'attr': {'class': 'from'}}) }}<br> 

但是: 渲染模板时抛出异常

可捕获的致命错误:Symfony\Component\Form\FormView 类的对象无法转换为字符串

GestionHotelBundle:Default:index.html.twig 第 147 行。

这是预订类型

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('dateArrivage',DateTimeType::class, array(
            'widget' => 'single_text',
            'format' => 'dd/MM/yyyy',
            'attr' => array('class' => 'date')
        ))
        ->add('dateSortie',DateTimeType::class, array(
            'widget' => 'single_text',
            'format' => 'dd/MM/yyyy',
            'attr' => array('class' => 'date')
        ))
        ->add('nbjour')
        ->add('dateReser',DateType::class)
        ->add('chambres', CollectionType::class, array(
            'entry_type' => ChambreType::class,
            'allow_add'    => true,
            'allow_delete' => true,
            'by_reference' => false,
        ))
        ->add('save',SubmitType::class)
    ;
    ;
}

这就是 vue:

<script>
$( function() {
    var dateFormat = "mm/dd/yy",
            from = $( ".from" )
                    .datepicker({
                        defaultDate: "+1w",
                        changeMonth: true,
                        numberOfMonths: 2
                    })
                    .on( "change", function() {
                        to.datepicker( "option", "minDate", getDate( this ) );
                    }),
            to = $( ".to" ).datepicker({
                defaultDate: "+1w",
                changeMonth: true,
                numberOfMonths: 2
            })
                    .on( "change", function() {
                        from.datepicker( "option", "maxDate", getDate( this ) );
                    });

    function getDate( element ) {
        var date;
        try {
            date = $.datepicker.parseDate( dateFormat, element.value );
        } catch( error ) {
            date = null;
        }

        return date;
    }
} );

{{ form_start(form) }}
    {{  form_label(form.dateArrivage) }}
    {{ form_errors(form.dateArrivage) }}
    {{ form_widget(form.dateArrivage , {'attr': {'class': 'from'}}) }}<br>
    <br><br>
    {{  form_label(form.dateSortie) }}
    {{ form_errors(form.dateSortie) }}
    {{ form_widget(form.dateSortie, {'attr': {'class': 'to'}}) }}<br><br>
    <br><br>

{{ form_row(form.nbjour) }}
{{ form_row(form.dateReser) }}

【问题讨论】:

  • 你不应该传递像form.dateArrivage|date("m/d/Y")这样的表单视图,而应该简单地传递form.dateArrivage
  • 同样的问题这个值无效

标签: symfony


【解决方案1】:

文档说:

如果您希望您的字段呈现为 HTML5“日期”字段,您 必须使用 yyyy-MM-dd 格式的 single_text 小部件(RFC 3339 格式),如果您使用 single_text,这是默认值 小部件。

因此您必须将日期格式更改为表单生成器:

$builder
        ->add('dateArrivage',DateTimeType::class, array(
            'date_widget' => 'single_text',
            'date_format' => 'yyyy-MM-dd', //here
        ))
        ->add('dateSortie',DateTimeType::class, array(
            'date_widget' => 'single_text',
            'date_format' => 'yyyy-MM-dd', //and here
        ))

【讨论】:

  • 同样的问题:这个值无效!我应该在 vue {{ form_widget(form.dateArrivage , {'attr': {'class': 'from'}}) }}
  • 不,他可以根据需要更改格式。 jQuery 插件只能使用相同的格式。 @O.o 看到我的回答了吗?
【解决方案2】:

在 jQuery-UI 日期选择器中设置dateformat option

$(".from").datepicker({ dateFormat:'mm/dd/yy'})

没有别的了。您不需要自己解析日期。

您还有其他错误:

DateTimeType 不能使用格式和小部件选项,而是使用 date_format、date_widget、time_format 和 time_widget 选项...

因为 jQuery 插件不关心时间。只能应用于日期部分。

http://symfony.com/doc/current/reference/forms/types/datetime.html#date-format

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2017-08-23
    • 2017-07-23
    • 2020-08-28
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    相关资源
    最近更新 更多