CakePHP 4 如何将月份输入字段显示为数字?

CakePHP 4 How can I display month input field as a number?

在 cakephp 3.x 中,我通过传递 false 使用 monthNames 属性将月份显示为数字。就像下面的例子。

echo $this->Form->month('mob', ['monthNames' => false]);

在版本 4.x 中,此示例代码已从文档中删除

https://book.cakephp.org/4/en/views/helpers/form.html#creating-month-controls

如何将 monthNames 显示为数字。我可以像下面那样做

<?= $this->Form->select('mob',[1,2,3,4...]) ?>

cakephp 中 monthNames 属性的替代方法是什么 4.x ?

没有内置替代方案,该选项刚刚被删除,CakePHP 4 将 date/time 相关控件切换为使用本机输入类型,考虑到浏览器采用率的增长。

Thr 结果只是一个 select 的输入,无论如何都是从 1 到 12 的值,所以你可以复制它。应该注意的是 select 选项将使用数组键作为值,数组值作为标签,所以如果你不希望你的月份值以 0 开头,你必须提供键从 1 开始。不过这很简单:

$options = array_combine(range(1, 12), range(1, 12));

如果您想从 CakePHP 3 复制默认值,那么您需要更多的逻辑,因为它使用零填充键和值 - 仍然很容易:

$options = collection(range(1, 12))
    ->map(function ($val) { return sprintf('%02d', $val); })
    ->indexBy(function ($val) { return $val; })
    ->toArray();