在CakePHP中处理复杂数据类型的最佳方法是什么?

我的目标:替换默认蛋糕Datepicker

我讨厌默认的CakePHP FormHelper日期选择器选择元素,而我想使用jQuery UI Datepicker小部件.为了优雅地降级,我希望有一个日期字段(使用小部件启用)和时间选择器选择框约束为15分钟增量.

如果我解释得很差,这就是它的样子:

我的理想解决方案

为了尽量减少重复,我想将HTML放在布局元素中并使用Behavior函数处理它.这样我可以做类似以下的事情:

view.ctp

echo $this->element( 'datepicker',array( 'data' => $data ) );

model.php

$actsAs = array( 'Datepicker' );

function beforeSave( $options ){
    $this->parseDatepickers();  //behavior function would alter $this->data
    return true;
}

问题

不幸的是,当它到达beforeSave(或beforeValidate)回调时,datepicker& timepicker字段已被模型的解构函数破坏.解构主义似乎正在寻找约会和时间以FormHelper创建它们的方式报告.

简而言之,它正在寻找:

[date_field] => Array
(
    [year] => 2011
    [month] => 11
    [day] => 11
    [hour] => 8
    [min] => 00
    [meridian] => pm
)

但相反,它发现:

[date_field] => Array
(
    [datepicker] => 11/11/2011
    [timepicker] => 8:00 pm
)

而且因为它没有找到它所期望的结构,我最终得到了这个:

[date_field] =>

我知道我可以使用适当命名的字段让jQuery更新隐藏的输入,但这不会很好地降级.

目前的解决方法

我目前正在做的是在保存前通过我的行为功能清洗数据 – 但这不是正确的方法:

$this->request->data = $this->Event->fixDates( $this->data );
$this->Event->save( $this->data );

所以……………

做这个的最好方式是什么?将它放在beforeSave或beforeValidate中似乎是“蛋糕方式”,但解构主义会杀死我.我是否需要扩展AppModel并覆盖解构?这看起来也很难看.

我通常将我的日期字段作为视图中的文本字段来覆盖默认的Form Helper输出,然后使用jQuery日期选择器(或任何您的替代选择器)来设置日期:
echo $this->Form->input('date',array('type' => 'text','class' => 'datepicker'));

这将输出典型标签而不是所有下拉.

然后,在我的模型的beforeSave函数中,我将格式更改为MySQL格式化日期:

$this->data['Model']['date'] = date('Y-m-d G:i:s',strtotime($this->data['Model']['date']));

(记得在beforeSave中返回true)

这与数据库中的正确日期时间数据类型一起使用,听起来就像您尝试做的那样.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧