Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在Plone上使用日期范围搜索内容_Jquery_Date_Search_Plone_Zpt - Fatal编程技术网

Jquery 如何在Plone上使用日期范围搜索内容

Jquery 如何在Plone上使用日期范围搜索内容,jquery,date,search,plone,zpt,Jquery,Date,Search,Plone,Zpt,普隆给了你成功的可能性。正常日期范围是通过仅使用最小日期设置的,因此范围介于今天和过去某个日期之间 我需要添加一个选项,设置开始日期和结束日期的日期范围 我正在考虑添加一个额外的选项,当选中该选项时,将显示两个日期选择器,但我不知道如何设置创建的。query:record:list:date变量以使用这两个值 我尝试在查询变量上传递一个列表,但是我得到: Error Value: Invalid DateTime "[DateTime('2000/07/14 00:00:00 GMT-3'),

普隆给了你成功的可能性。正常日期范围是通过仅使用最小日期设置的,因此范围介于今天和过去某个日期之间

我需要添加一个选项,设置开始日期和结束日期的日期范围

我正在考虑添加一个额外的选项,当选中该选项时,将显示两个日期选择器,但我不知道如何设置创建的
。query:record:list:date
变量以使用这两个值

我尝试在
查询
变量上传递一个列表,但是我得到:

Error Value: Invalid DateTime "[DateTime('2000/07/14 00:00:00 GMT-3'), DateTime('2014/07/14 00:00:00 GMT-3')]"

以前有没有其他人发现有这样的要求?你是怎么解决的?是否应该将其移植到核心?

您可能希望为索引名传递一个查询dict,其中包含一个range参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:

>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
...     'modified': {
...         query: (startDT, endDT),
...         range: 'min:max',
...         }
...     }
... 
>>> result = catalog.unrestrictedSearchResults(query)  # or .search()

这里也记录了类似的内容:

您可能希望传递索引名的查询dict,其中包含一个范围参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:

>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
...     'modified': {
...         query: (startDT, endDT),
...         range: 'min:max',
...         }
...     }
... 
>>> result = catalog.unrestrictedSearchResults(query)  # or .search()

这里也记录了类似的内容:

您可能希望传递索引名的查询dict,其中包含一个范围参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:

>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
...     'modified': {
...         query: (startDT, endDT),
...         range: 'min:max',
...         }
...     }
... 
>>> result = catalog.unrestrictedSearchResults(query)  # or .search()

这里也记录了类似的内容:

您可能希望传递索引名的查询dict,其中包含一个范围参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:

>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
...     'modified': {
...         query: (startDT, endDT),
...         range: 'min:max',
...         }
...     }
... 
>>> result = catalog.unrestrictedSearchResults(query)  # or .search()

这里也有类似的记录:

我花了一些时间研究这个问题,我有一个可行的解决方案

首先,我们需要了解Zope是如何工作的;当您使用类似“created.query:record:list:date”的名称命名表单元素时,您正在告诉Zope进行一些参数转换:

  • 记录,将变量转换为记录属性
  • 列表,将变量转换为Python列表
  • date,将字符串转换为DateTime对象
有关这方面的更多信息,请查看

因此,参数会自动转换为Python中的字典记录,如下所示:

'created':{'query':[DateTime('2014/07/09 00:00:00 GMT-3'),'range':'min']
我的错误是假设我必须在一个请求变量上传递所有列表元素

我在表单末尾添加的代码如下所示:


时间范围
var today=新日期();
var昨天=新日期();
昨日.setDate(昨日.getDate()-1);
var start=forday.toLocaleDateString().slice(0,10);
var end=today.toLocaleDateString().slice(0,10);
$(文档).ready(函数(){
$(“#范围开始”).datepicker();
$(“#范围结束”).datepicker();
$(“#范围开始”).hide();
$(“#范围结束”).hide();
});
$('input:radio')。更改(函数(){
var option=$('input:radio:checked','#searchform').val();
如果(选项==''){
$(“#范围开始”).val(开始);
$(“#范围开始”).show();
$('范围结束').val(结束);
$(“#范围结束”).show();
$('#range').val('min:max');
}
否则{
$(“#范围开始”).val(“”);
$(“#范围开始”).hide();
$(“#范围结束”).val(“”);
$(“#范围结束”).hide();
$('#range').val('min');
};
});
请特别注意以下事项:

  • 开始日期和结束日期是与jQueryUI datepicker小部件关联的输入元素

  • 两个输入元素与另一个共享相同的名称(
    created.query:record:list:date:ignore\u empty
    ),这就是Zope魔术发生的地方:具有相同名称的所有输入元素的值在一个唯一的列表记录上转换,如下所示:

'created':{'query':[DateTime('2014/07/15 00:00:00 GMT-3')、DateTime('2014/07/16 00:00:00 GMT-3')、'range':'min:max'}
  • 我们设置了一个额外的参数转换器(
    ignore\u empty
    ),它只是避免将没有值集的元素添加到列表中(我也将此转换器添加到了其他输入元素)

  • 当我们点击
    查询日期范围
    元素时,我们必须初始化日期选择器;当我们单击任何其他元素时,我们需要清除这些值,以避免将它们添加到列表中

  • 我们还根据@sdupton前面提到的查询类型更改
    range
    元素的值


代码的JavaScript部分肯定会得到增强;我的技能真的很有限。

我花了一些时间研究这个问题,我有一个可行的解决方案

首先,我们需要了解Zope是如何工作的;当您使用类似“created.query:record:list:date”的名称命名表单元素时,您正在告诉Zope进行一些参数转换:

  • 记录,将变量转换为记录属性
  • 列表,将变量转换为Python列表
  • date,将字符串转换为DateTime对象
有关这方面的更多信息,请查看

因此,参数会自动转换为Python中的字典记录,如下所示:

'created':{'query':[DateTime('2014/07/09 00:00:00 GMT-3'),'range':'min']
我的错误是假设我必须在一个请求变量上传递所有列表元素

我在表单末尾添加的代码如下所示:


时间范围
var today=新日期();
var昨天=新日期();
昨日.setDate(昨日.getDate()-1);
var start=forday.toLocaleDateString().slice(0,10);
var end=today.toLocaleDateString().slice(0,10);
$(文档).ready(函数(){
$(“#范围开始”).datepicker();
$(“#范围结束”).datepicker();
$('#范围sta