0

データをGETとして送信するフォームがあります

つまり、私が行うとき:

echo $this->Form->create('Search', array('type'=>'get', 'url'=> array('controller'=>'searches','action'=>'results')));
echo '<div class="search-box">';
echo $this->Form->input('search', array(
    'class' => 'search-input',
    'placeholder' => 'Search Domain Names',
    'label'=>false));
echo $this->Form->input('', array(
    'class' => 'search-icon',
    'label' => false,
    'type' => 'submit'
    ));
echo $this->Form->end();
     ?>

URLを次のように取得します:example.com/Searches/results?search=asdadasdasd

次の URL を取得するようにルートをフレーム化したい:

example.com/search/asdadasdasd.html

私は見ました:http://book.cakephp.org/2.0/en/development/routing.html

拡張機能を取得する方法を取得しました:http://book.cakephp.org/2.0/en/development/routing.html#file-extensions

しかし、検索クエリを内部で取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

これは CakePHP 自体では不可能です。フォームを生成するとき、それはまだ存在しないため、検索用語についてはわかりません。したがって、そのような URL の生成は、フォームを送信するときに、つまりユーザー側で動的に行う必要があります。これには JavaScript が必要です。

最も簡単な方法は、サーバー側のURL 書き換えを使用することです。

以下に例を示します ( で正常に動作するはずですapp/webroot/.htaccess)。キーのクエリ文字列をテストしsearch、URL のパスが一致する場合にその値をリダイレクトに使用します/searches/results(パスとクエリ文字列の両方が大文字と小文字を区別しないで処理されます)。

RewriteCond %{QUERY_STRING} ^search=(.*)$ [NC]
RewriteRule ^searches/results$ /search/%1.html? [NC,R=302,L]

/searches/results?search=whateverこれは のようなURL を書き換えます/search/whatever.html

于 2013-07-19T21:02:10.400 に答える