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

时间:2016-02-18 15:20:44

标签: forms date cakephp-3.0 cakephp-3.x

我正在尝试让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))]);,但这只填写了正确的日期,并没有按照我希望的方式对选择框进行排序。 我发现在之前版本的cakePHP中你可以使用'dateFormat' => 'DMY'来实现这一点。但这显然已经从cakePHP中删除了。

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

我的问题是:除了编辑源文件外,有没有办法告诉蛋糕我希望我的日期是什么顺序?

1 个答案:

答案 0 :(得分:0)

所有这些都在manual

中解释过

无论如何,而不是编辑$_defaultConfig在配置文件夹中创建一个名称,如my_form_templates.php

并在其中编写模板

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

然后当您加载FormHelper时,您可以执行

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

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