2017-03-09 43 views
1

使用Algolia InstantSearch js庫和PHP客戶端,我希望將由InstantSearch urlSync創建的查詢字符串傳遞到PHP庫的搜索方法中。有沒有一種方便的方法來做到這一點,或者我將不得不將查詢字符串轉換爲庫自己期望的參數?使用Algolia,如何將由urlSync創建的查詢字符串傳遞到php客戶端?

例如,我有字符串:

?q=&hPP=1000&idx=myindex&p=0&dFR%5Bcolor%5D%5B0%5D=orange&is_v=1

理想我想

$client = new \AlgoliaSearch\Client("x", "x"); 
$index = $client->initIndex($_GET['idx']); 
parse_str($_SERVER['QUERY_STRING'], $params); 
$res = $index->search('', $params); 

但這樣做會引發有傳入的PARAMS意外性質的錯誤。

回答

5

不幸的是,使用Algolia客戶端在您的後端重新使用即時搜索網址確實是不可能的。我會假設你問這個SEO目的,這是一個絕對有效的點。

目前唯一可行的語言是JavaScript。 事實上,這個邏輯可以從instantsearch.js的底層庫中提取:algoliasearch-helper-js

檢索到的一個

實際上,您可以在前端添加此邏輯,對此查詢進行網址編碼並將其設置爲您要在後端解碼的自定義參數。這非常醜陋,但它可以工作(儘管它可能不適合最大的URI長度)。

在前端,你就不必去通過從URL中提取的狀態和狀態設置爲一個新的助手的過程中,你可以簡單地使用search.helper - 在search是你instantsearch.js實例。

+0

感謝您的解釋。是的,目標是SEO;我希望在js準備好之前提供緩存的結果。如果syncUrl使用的名稱與過濾器參數兼容,那將是非常好的,並且這些在所有客戶端都是一致的(可能它們已經是我了,至今我還沒有使用任何js和PHP)。但這只是一個建議。現在我只需將傳遞的URL參數映射到PHP,我們就可以穩定地控制我們將要接收的內容,並讓js在服務器上運行,但這僅僅是爲了矯枉過正。再次感謝! –

+1

這絕對是一個很好的建議,正在內部進行討論。由於任何改變都可能不會在幾個月前完成,因此這個解決方案可能是目前最好的解決方案。但顯然,我們正在盡全力在所有支持的平臺上統一體驗。 :) – Jerska

相關問題