2011-11-01 130 views
0

我正在嘗試爲opencart編寫產品過濾器擴展。PHP:如何刪除url中的重複參數?

我指定大小,顏色等選項的URL是這樣的:

的index.php路線=產品/類別&路徑= 59_63 &大小= 57 &顏色=黑色

問題是當我點擊頁面上的另一種顏色的鏈接是這樣的:

index.php?route = product/category &路徑= 59_63 &大小= 57 &顏色=黑色&顏色=棕色

正如你可以看到有被複制的顏色參數,它攪亂類別上市。 如何刪除相同的參數?

原來Opencart的的鏈接設計器功能:

public function link($route, $args = '', $connection = 'NONSSL') { 
    if ($connection == 'NONSSL') { 
     $url = $this->url; 
    } else { 
     $url = $this->ssl; 
    } 

    $url .= 'index.php?route=' . $route; 

    if ($args) { 
     $url .= str_replace('&', '&', '&' . ltrim($args, '&')); 
    } 

    return $this->rewrite($url); 
} 

回答

2

沒有足夠的信息,以提供正確的答案,但我會採取一種猜測。

該問題似乎與$args。看起來你正在從URL中取得$args並追加到你的新顏色參數。

如果URL是index.php?route=product/category&path=59_63&size=57&color=black,然後$argspath=59_63&size=57&color=black

你追加到它color=brown$args becomes path=59_63&size=57&color=black&color=brown

如果是這樣的話,你可以這樣做:

parse_str($args,$url_params); 
$url_params['color'] = 'brown'; //-- overwrites color=black with color=brown 
$args = http_build_query($url_params); 

然後通過$參數傳遞給您的link()功能。

0

您不必刪除重複的參數。
你有沒有添加它。

使用http_build_query()創建一個查詢字符串

+0

我無法理解該怎麼做,並且我已添加原始的opencart鏈接建設者功能的主要消息... – user1017899

0

這實在與opencart的鏈接構建器沒有任何關係,它是在這之外完成的,以免做出任何核心更改。您需要在您的控制器代碼中爲您的類別使用$ this-> url->鏈接時設置該值。當您獲取用於過濾器的所有顏色時,請務必取消傳遞到鏈接第二個參數的顏色屬性