CakePHP更改列表输入中的格式

CakePHP更改列表输入中的格式,php,cakephp,cakephp-3.x,Php,Cakephp,Cakephp 3.x,我从控制器发送此查询: $tareas = $this->Tests->Tareas->find('list', [ 'limit' => 200, 'keyField' => 'id', 'valueField' => 'Fecha' ]); valueField“Fecha”是我数据库中的一个日期 到目前为止还不错,但在视图中,此日期字段以“M-d-Y”格式显示,

我从控制器发送此查询:

$tareas = $this->Tests->Tareas->find('list', [
            'limit' => 200, 
            'keyField' => 'id', 
            'valueField' => 'Fecha'
        ]);
valueField“Fecha”是我数据库中的一个日期

到目前为止还不错,但在视图中,此日期字段以“M-d-Y”格式显示,我想要“dd-MM-yyy”格式

问题是,我使用输入来显示日期列表,但我不知道如何更改格式

我的看法是:

echo $this->Form->input('tarea_id', [
                'options' => $tareas,
            ]);
如何以$tareas格式更改此日期格式? 我尝试:

Cake\I18n\I18n::locale('es-ES');
但这只是逐日逐月的变化


事先非常感谢。

经过大量阅读和练习,我找到了部分解决方案。我只想更改该对象中的日期格式。但目前这个解决方案是好的

我改为配置文件config/bootstrap.php

namespace App\Model\Entity;

use Cake\ORM\Entity;

class User extends Entity {

       protected function _getList() {
          return date("Y-m-d",strtotime($this->_properties['Fecha']));
       }

}
在此文件的位置:

ini_set('intl.default_locale', Configure::read('App.defaultLocale'));
改为:

ini_set('intl.default_locale', 'es_ES');
Cake\I18n\Date::setToStringFormat('dd-MM-YYYY');
Cake\I18n\FrozenDate::setToStringFormat('dd-MM-YYYY');
Cake\Database\Type::build('date')
    ->useImmutable()
    ->useLocaleParser()
    ->setLocaleFormat('dd-MM-YYYY');
这将使用指定的格式重新格式化所有站点日期

如果有其他解决方案,我们将不胜感激


谢谢大家阅读我的文章。

我假设您使用的是Cakephp 3.0

我找到了一个更好的解决方案,就是转到config/app.php文件

寻找

'App' => [
        'namespace' => 'App',
        'encoding' => env('APP_ENCODING', 'UTF-8'),
        'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
        'base' => false,
编辑该行以适合您的本地需求

对爱尔兰来说,这是一个挑战

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_IE'),
西班牙

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_ES'),

您可以在model/entity/中创建实体,例如,您的模型名为users,因此您可以创建下面的实体

User.php

namespace App\Model\Entity;

use Cake\ORM\Entity;

class User extends Entity {

       protected function _getList() {
          return date("Y-m-d",strtotime($this->_properties['Fecha']));
       }

}
现在你可以使用

$tareas = $this->Tests->Tareas->find('list', [
            'limit' => 200, 
            'keyField' => 'id', 
            'valueField' => function ($e) {
                        return $e->get('list');
                    }
        ]);
更多信息