【问题标题】:CakePHP change format in a list inputCakePHP 在列表输入中更改格式
【发布时间】:2016-04-07 21:42:21
【问题描述】:

我从控制器发送此查询:

$tareas = $this->Tests->Tareas->find('list', [
            'limit' => 200, 
            'keyField' => 'id', 
            'valueField' => 'Fecha'
        ]);

valueField 'Fecha' 是我数据库中的一个日期。

到目前为止一切顺利,但在视图中,此日期字段以“M-d-Y”格式显示,我想要“dd-MM-yyyy”格式。

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

我的观点有:

echo $this->Form->input('tarea_id', [
                'options' => $tareas,
            ]);

如何在 $tareas 中更改此日期格式? 我尝试:

Cake\I18n\I18n::locale('es-ES');

但这只是逐月的锯切顺序。

非常感谢您。

【问题讨论】:

    标签: php cakephp cakephp-3.x


    【解决方案1】:

    我假设你使用的是 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'),
    

    【讨论】:

      【解决方案2】:

      您可以在模型/实体/中创建实体,例如您的模型名称是用户,因此您可以创建以下实体

      用户.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');
                          }
              ]);
      

      更多信息 http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#finding-key-value-pairs

      【讨论】:

        【解决方案3】:

        经过大量阅读和实践,我找到了部分解决方案。我只想更改该对象中的日期格式。但是这个解决方案暂时还不错。

        我更改为文件 config/bootstrap.php

        的配置

        在这个文件的位置:

        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');
        

        这将使用指示的格式重新格式化所有站点日期。

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

        感谢大家阅读我。

        【讨论】:

          猜你喜欢
          • 2013-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多