CakePHP 更改列表输入中的格式
CakePHP change format in a list input
我从控制器发送这个查询:
$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');
但这只是按月排列日的顺序。
非常感谢您。
经过大量阅读和实践,我找到了部分解决方案。我只想更改该对象中的日期格式。不过这个解决方案暂时还好。
我更改为文件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');
这会使用指定的格式重新格式化所有站点日期。
如果有其他解决方案,将不胜感激,
感谢大家阅读我。
我假设你使用的是 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/ 中创建实体,例如您的模型名称是用户,因此您可以创建下面的实体
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
我从控制器发送这个查询:
$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');
但这只是按月排列日的顺序。
非常感谢您。
经过大量阅读和实践,我找到了部分解决方案。我只想更改该对象中的日期格式。不过这个解决方案暂时还好。
我更改为文件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');
这会使用指定的格式重新格式化所有站点日期。
如果有其他解决方案,将不胜感激,
感谢大家阅读我。
我假设你使用的是 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/ 中创建实体,例如您的模型名称是用户,因此您可以创建下面的实体
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