[英]filter dates. Cakephp is returning an array instead of a date, is that normal?
我正在为一些分页列表构建过滤器,并且我希望能够显示两个日期之间创建的元素。 但我不确定如何正确执行。
风景:
<?php echo $this->Form->create('Logs');?>
<fieldset>
<?php
echo $this->Form->input('start',array('type'=>'date'));
echo $this->Form->input('end',array('type'=>'date'));
?>
</fieldset>
<?php echo $this->Form->end('Filter');?>
控制器:
...
$conditions['Logs.created BETWEEN ? AND ?'] = array( $this->data['Logs']['start'],$this->data['Logs']['end']);
...
问题是$this->data['Logs']['start']
和$this->data['Logs']['end']
是数组,我需要字符串:
[Logs] => Array
(
[start] => Array
(
[month] => 04
[day] => 19
[year] => 2011
)
[end] => Array
(
[month] => 04
[day] => 19
[year] => 2011
)
)
我知道我可以使用一些php函数将数组转换为字符串,但是蛋糕中必须有一些函数或某些东西。 我觉得我没有正确构建视图
谢谢你的帮助。
您可以使用时间助手,它是daysAsSql函数
daysAsSql( $begin, $end, $fieldName, $userOffset = NULL )
daysAsSql返回格式为“($ field_name> ='2008-01-21 00:00:00')AND($ field_name <='2008-01-25 23:59:59')”的字符串。 如果您需要搜索两个日期(包括两个日期)之间的记录,这将很方便。
我认为最好的选择是编写自己的帮助器函数,然后在控制器中调用它。
该线程讨论如何创建您的助手: 如何最好地将CakePHP日期选择器表单数据转换为PHP DateTime对象?
您可以像这样将其加载到控制器中
App::import('Helper', 'DateHelper');
$dateHelper = new DateHelper();
另外,为什么不只切换到常规文本输入,也可能切换到JS datepicker? 这样可以解决您的问题,而不必求助于助手路线。 但是,您将失去下拉菜单的可用性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.