【问题标题】:新奏鸣曲页面捆绑网站上的“启用自”无效
【发布时间】:2021-08-15 23:27:17
【问题描述】:

我有一个全新的 Sonata Page Bundle 安装。我正在使用站点管理屏幕创建站点实体。

我使用捆绑包附带的 DateTimePicker 来选择“启用日期”。选择器创建此日期:May 27, 2021, 6:40:43 pm

然后我保存页面。验证器告诉我“这个值无效”。在同一页面的选择器生成的字符串上!

这是一个已知的错误吗?还是我做错了什么?我会将此留空,但该字段是强制性的。

作为参考,composer 说我有 page-bundle 版本 3.22.2,packagist 说这是最新的稳定版本。 admin-bundle 的版本是 3.100.2。

也供参考:我的 Firefox 浏览器设置为使用美国英语作为其语言,以防万一。

【问题讨论】:

    标签: symfony sonata-admin sonata


    【解决方案1】:

    看起来验证器做错了什么,因为它需要不同的格式(可能是 yyyy-mm-dd)。

    我找到了@Capfer 对可能有用的类似问题的回答。他基本上改变了表单类型的预期日期格式。

    Link

    $formMapper
    ->add('dateOfAdoption', 'sonata_type_datetime_picker',
         [
            'dp_default_date' => $container->getCreatedAt()->format('d M. Y H:i '),
            'datepicker_use_button' => true,
            'mapped' => false,
         ]
    );
    
    Note: 
    d - The day of the month (from 01 to 31)
    M - A short textual representation of a month (three letters)
    Y - A four digit representation of a year
    H - 24-hour format of an hour (00 to 23)
    i - Minutes with leading zeros (00 to 59)
    

    【讨论】:

    • 所以我想我使用 ez-extends 来扩展包,然后覆盖表单类型?好的。如果我在接下来的几天内没有看到更简单的解决方案,我会将您的答案标记为正确答案并奖励赏金。谢谢你写它。
    【解决方案2】:

    我用 PHP 7.4.2 安装了一个 symfony (v4.4.25) + sonata 项目来重现这个,我没有这个错误,我的浏览器也是英文的。

    您应该验证您是否有 moment.min.js 或任何 javascript 缺失。 javascript 应该在提交事件时将日期格式更改为数据库友好格式,对我来说是 mysql。

    在使用配方安装奏鸣曲包后(以避免手动进行所有配置),我添加到 sonata_admin.yaml

       assets:
            extra_javascripts:
                - bundles/sonatapage/sonata-page.back.min.js
            extra_stylesheets:
                - bundles/sonatapage/sonata-page.back.min.css
    

    我在 /admin/app/sonatapagesite/1/edit 上遇到以下错误

    Too few arguments to function Sonata\Form\Type\BasePickerType::__construct(), 0 passed in /Users/hyper/Work/Stackoverflow/so/vendor/symfony/form/FormRegistry.php on line 91 and exactly 3 expected
    

    为了修复它,我添加到 bundles.php

    Sonata\Form\Bridge\Symfony\SonataFormBundle::class => ['all' => true],
    

    【讨论】:

    • 嘿 HypeR,感谢您的详细回答和关于缺少 JavaScript 文件的有见地的评论。我注意到我丢失了 sonata-page.back.min.js,所以我运行 assets:install,虽然它消除了丢失的脚本错误,但它并没有解决问题:-(。我查看了 Firefox 的网络检查器面板,看起来 JavaScript(现在正确包含)在发送 POST 之前没有转换日期格式。例如,请求标头中显示的是:s60b7cfa5c4938[enabledFrom] "Jun+3,+ 2021,+8:39:22+pm"
    • 我的请求标头显示的格式与您的相同,错误不是基于 javascript。检查 symfony 要求symfony.com/doc/current/setup.html#technical-requirements,也许你的 intl 扩展有问题。还要检查您是否在 config/translation.yaml 中设置了区域设置DataTransformer/DateTimeToLocalizedStringTransformer.php 在第 152 行附近寻找 TransformationFailedException 并添加一些调试
    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2023-03-17
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多