1

似たような問題がある既存の質問を検索するために最善を尽くしましたが、見つけることができませんでした。これが私の状況です

パラメータ「検索語」を受け入れる search という名前のコントローラーがあります。このコントローラーが www.xyz.com/search/red+car のような URL から直接呼び出されると、結果が返され、ブラウザーのアドレスバーの URL は www.xyz になります。 com/search/red+car ですが、ユーザーが同じ用語で Web ページから検索を送信すると、結果はうまくいきますが、URL には検索用語が反映されません。

リダイレクトを行うと、フォームの POST データが失われますが、私の場合は POST を再送信することも解決策ではありません。検索語が表示されるように URL を変更する方法が必要です。

これが私の最初の質問なので、お手柔らかにお願いします。

@Vlakarados - 同じコントローラーを使用して、投稿データとコントローラーパラメーターから検索結果を提供しようとしています。どちらも正常に動作しますが、Web ページで検索フォームを使用すると、検索パラメーターが URL に反映されません。

@Rakesh Shetty - 実際のメソッドは非常に長いですが、投稿データと渡されたパラメーターに従って圧縮形式のビルド クエリを次に示します。ビューに結果を入力する ビューをレンダリングする

4

2 に答える 2

2

さまざまな解決策を提案してくれてありがとう。

jquery を使用してフォーム アクション パラメータを変更しました。ドロップダウンの選択が変更されるたびに、値がアクション パラメータに追加されます。また、投稿データの一部からドロップダウンを削除しました。

地域用と郵便番号用の 2 つのドロップダウンがあります。この新しいアプローチはボットのドロップダウンで機能し、コントローラーの既存のコードは大きな変更なしで機能します。

次の JavaScript コードを使用して、ユーザーが領域を変更したときに新しいアクション パラメーターを作成しました。郵便番号も同様です。

$("#cityname").change(function(){
    var action = $(this).val();
    alert(action);
    $("#searchform").attr("action", "search/" + action);
});

私は自分の状況を明確に説明することができなかったと思います。

于 2012-07-05T01:59:41.130 に答える
0

それを行うより良い方法は、コントローラーにあります。

function search($search_query) {

    // .. use your query as you normally would - display products, posts, messages
    $data = array('search_query' => $search_query);
    $this->load->view('search', $data);
}

// use this method as the form action
function search_proxy() {
    $search_query = $this->input->post('search');
    // if needed urlencode or other search query manipulation
    redirect('controller/search/'.$search_query);
}

この方法では、問題はなく、URL のデータのみを操作できます。

編集: 2 番目のオプションは、JavaScript を使用することです。ユーザーがフォームを送信するときに、フォームのアクションを変更して、検索されたクエリをフォーム アクションに含めるようにします。

于 2012-07-04T08:50:26.560 に答える