CakePHP 3.2 更改日期表单输入的默认顺序

CakePHP 3.2 changing default order of date form input

我试图让 cakephp 生成以下 HTML <div class="input date"><label>Leverdatum </label><select name="Leverdatum [day]">...</select><select name="Leverdatum [month]">...</select><select name="Leverdatum [year]">...</select></div> 以便输入日期的顺序是日-月-年。 然而,蛋糕是按照年-日-月的顺序生成的。 我在我的 .ctp 页面上使用的代码是 echo $this->Form->input('Leverdatum ', ['type' => 'date', 'default' => date("d-m-y", strtotime($orders->DELIVERYDATE))]); 但这只会填写正确的日期并且不会按照我希望的方式对 select 框进行排序。 我发现在以前的 cakePHP 版本中,您可以使用 'dateFormat' => 'DMY' 来实现这一点。但这显然已从 cakePHP 中删除。

现在我确实找到了一个 'fix',它是在 protected $_defaultConfig 中编辑位于 \Cake\View\Helper\FormHelper 的 cakePHP 文件,将变量 'dateWidget' => '{{year}}{{month}}{{day}}{{hour}}{{minute}}{{second}}{{meridian}}' 更改为我在 'dateWidget' => '{{day}}{{month}}{{year}}{{hour}}{{minute}}{{second}}{{meridian}}' 中想要的顺序。但我真的不想每次更新我的 cakePHP 版本时都必须这样做。

我的问题是:除了编辑他们的源文件之外,有没有办法告诉蛋糕我希望我的约会对象按什么顺序排列?

manual

中都有解释

无论如何,不​​要编辑 $_defaultConfig 在您的配置文件夹中创建一个文件,将其命名为 my_form_templates.php

并在其中写入您的模板

<?php
    return [
        'dateWidget' => '{{day}}{{month}}{{year}}{{hour}}{{minute}}{{second}}{{meridian}}'
    ];
?>

然后当你加载 FormHelper 时你可以做

 $this->loadHelper('Form', [
        'templates' => 'my_form_templates',
    ]);

这告诉蛋糕使用您的模板而不是默认模板