Silverstripe:partialMatchFilter和"&"

时间:2014-10-27 01:54:05

标签: silverstripe

我有一个客户希望能够从Silverstripe标签云小部件中选择一些东西。

所以,使用jQuery,我准备一个包含所有选定标签的字符串,然后传递给Silverstripe函数。

if($_GET["selectedTags"]){

  $selectedTagString = $_GET["selectedTags"];
  $selectedTagString = substr($selectedTagString, 0, strlen($selectedTagString) -1);

  $tagArray = explode("|", $selectedTagString);

  $blogEntries = DataObject::get("BlogEntry")->filter(array("Tags:PartialMatch" => $tagArray));

  return $blogEntries->renderWith(array("blogSearchResults"));
  }
}

它运作良好。

除了标有“&”的标签外在其中,如“Otago& Southland”,搜索失败,没有任何内容被检索。

查看生成的SQL,一切似乎都没问题。

SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."Created", 
.
.
.
"BlogEntry_Live"."BlogEntryThumbnailID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" LEFT JOIN "Page_Live" ON "Page_Live"."ID" = "SiteTree_Live"."ID" LEFT JOIN "BlogEntry_Live" ON "BlogEntry_Live"."ID" = "SiteTree_Live"."ID" WHERE ("BlogEntry_Live"."Tags" LIKE '%southland & otago championships%') AND ("SiteTree_Live"."ClassName" IN ('BlogEntry')) ORDER BY "SiteTree_Live"."Sort" ASC

以前有人有这个问题吗?

1 个答案:

答案 0 :(得分:1)

标签是否使用&存储在数据库中?然后你首先应该html编码你的字符串。