1

おそらく小さな問題であると思われるものを解決するためにしばらくの間試みましたが、頭を悩ませているようには見えません。私はいくつかの異なるアプローチを試しました.SOで見つかったものもありますが、まだ機能していません.

問題は次のとおり
です。布を展示するショールームのページがあります。一枚一枚の布には四つの「景色」があります

  1. 女性
  2. フロント
  3. 戻る

現在、ユーザーは男性モデルまたは女性モデルのいずれかを表示してこれをフィルタリングできますが、両方の性別の前面または背面を表示してフィルタリングすることもできます.

URL クエリを検出して正しいデータを表示するようにスクリプトを作成しましたが、問題は URL を正しく「構築」することです。

最初にページに入ると、4 つのリンクは次のようになります。

  1. example.com?gender=男性
  2. example.com?gender=女性
  3. example.com?site=front
  4. example.com?site=back

これが機能するのは、モデルの「デフォルト」ビュー (デフォルト ビューは、gender=male && site=front に設定されている) であるためです。

しかし、私が?gender=femaleを表示することを選択した場合、ユーザーは&site=backを追加してもう一度フィルタリングできるはずなので、完全な URL は example.com?gender=female&site=back になります。

次に、リンクを押して性別=男性を確認すると、URLパラメーター&site=backを保持する必要があります。

これまでに達成したことは、既存の URL にパラメーターを追加することですが、これはexample.com?gender=male&site=front&gender=femaleのような URL 文字列になります…</p>

parse_url関数、http_build_query($parms)メソッドを使用して、既存のパラメーターをチェックする「独自の」関数を作成しようとしましたが、機能しません。

私の最近の試みはこれでした:

_setURL(‘http://example.com?gender=male’, ‘site’, ‘back’);
function _setURL($url, $key, $value) {
    $separator = (parse_url($url, PHP_URL_QUERY) == NULL) ? '?' : '&';

    $query = $key."=".$value;
    $url .= $separator . $query;
    var_dump($url); exit;
}

この関数は、$_GET パラメータが既に存在していない限り機能するため、追加せずに置換する必要があります。

これを解決するための「ベストプラクティス」があるかどうかはわかりません。前述のように、SO に関する多くの回答を見てきましたが、私の問題にスポットを当てたものはありませんでした。

そうでなければ私に知らせてください、私は詳しく説明します。
ヘルプやアドバイスをいただければ幸いです

4

4 に答える 4

-1
<?php
function requestUriAddGetParams(array $params)
{
    $parseRes=parse_url($_REQUEST['REQUEST_URI']);
    $params=array_merge($_GET, $params);
    return $parseRes['path'].'?'.http_build_query($params);
}
?>
于 2014-12-18T20:16:30.340 に答える