好吧,我不知道这个解决方案是否有帮助,但这是我通常会做的……首先,您的请求的 URL 应该这样编码:
http://example.com/api/some-endpoint?availableDate.date%5Bstrictly_before%5D=2020-01-02&availableDate.date%5Bstrictly_after%5D=2020-02-04&page=1
你的实体应该这样注释:
@ApiFilter(
DateFilter::class,
properties={
"availableDate"
}
)
还请注意,您可以像这样过滤嵌入对象的属性:
@ApiFilter(
DateFilter::class,
properties={
"exampleProperty.embeddedProperty"
}
)
其中“exampleProperty”是您要过滤的实体内的字段,“embeddedProperty”是另一个实体(嵌入式)中的字段名称
这是我如何在 JavaScript 中创建 URL 以发出 AJAX 请求的示例:
export const setAvailableDateURLFilters = ( pag = null, before = null, strictlyBefore = null,after = null, strictlyAfter = null) =>{
let url = "/api/available-dates?";
if(before)
url === "/api/available-dates?" ? (url += "date%5Bbefore%5D=" + before) : (url += "&date%5Bbefore%5D=" + before);
if(strictlyBefore)
url === "/api/available-dates?" ? (url += "date%5Bstrictly_before%5D=" + strictlyBefore) : (url += "&date%5Bstrictly_before%5D=" + strictlyBefore);
if(after)
url === "/api/available-dates?" ? (url += "date%5Bafter%5D=" + after) : (url += "&date%5Bafter%5D=" + after);
if(strictlyAfter)
url === "/api/available-dates?" ? (url += "date%5Bstrictly_after%5D=" + strictlyAfter) : (url += "&date%5Bstrictly_after%5D=" + strictlyAfter);
if(pag)
url === "/api/available-dates?" ? ( url += 'page=' + pag) : (url += '&page=' + pag);
return url;
}
你的答案是对的!我只是添加一些提示和信息!希望这对某人有所帮助...干杯!