Формат изменения CakePHP при вводе списка

Я отправляю с контроллера этот запрос:

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

Но это только распиловка по месяцам.

Заранее большое спасибо.


person Alejandro Pascual Montenegro    schedule 07.04.2016    source источник


Ответы (3)


Я предполагаю, что вы используете 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'),
person fuzzy dunlop    schedule 09.04.2016

Вы можете создать сущность в модели/сущности/, например, имя вашей модели - пользователи, поэтому вы можете создать следующую сущность

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

Для получения дополнительной информации http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#finding-key-value-pairs

person Community    schedule 20.07.2016

После долгих прочтений и практики я нашел частичное решение. Я хотел изменить формат даты только в этом объекте. Но это решение хорошо на данный момент.

Я перехожу к конфигурации файла 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');

Это переформатирует все даты сайта в указанном формате.

Если есть другое решение, будем признательны,

Всем спасибо, что читаете меня.

person Alejandro Pascual Montenegro    schedule 08.04.2016