を助けます。 2番目の部分はpage=2
ですが、最初のページであれば任意にしたい、それはpage=1
です。したがって、search?q=chicken
などの別のURLも有効で、search?q=chicken/page=1
と同等です。Zendの正規表現のルートは、私は次の形式でURLを処理するZend_Controller_Router_Route_Regexルートを作成しようとしています
ここでは私の試みは成功していませんが、私がしようとしていることのより良いイメージを提供します。
$route = new Zend_Controller_Router_Route_Regex(
'search\?q=([a-zA-Z0-9]+)(?:/page=(\d+))',
array(
'page'=> '1',
'module' => 'default',
'controller' => 'search',
'action' => 'index'),
array(1 => 'query', 2 => 'page'),
'search?=%s/page=%d');
$router->addRoute('search', $route);
ここでの問題は正しい正規表現を構成できないことです。
ありがとうございます。
EDIT#1
正しい正規表現MA4で指摘したように、本当の問題はダリルによって指される'search\?q=([a-zA-Z0-9]+)(?:/page=(\d+))?'
です。物事を見通しに入れるための情報が少しあります。
マイ検索テキストボックスとボタン
<form action="/search" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
</form>
私はsearch
ボタンを押すたびに、私は検索?Q = [テキスト]要求を取得します。どのようにして正規表現のマッチルートを通過させるのですか?ここで
は私が何をしたいのか、しかし、コードは動作しません
if($this->getRequest()->getParam('query')){
// redirect success
} else {
$url = "search?q=" . $this->_getParam('q');
$this->_redirect(route('search'), array('code' => 301));
}
おかげで、私の検索ボタンが動作しない理由を、今、私は知っているが。私は詳細については私の元の質問を編集しました。 – nobody
私の答えはまだ答えです。 '/ search?q = chicken/page = 2'というリクエスト文字列ではできないことはpathinfoが'/search'になり、 'q'の単一の$ _GET paramが' chicken/page = 2' - Zend Frameworkルータはpathinfoのみを使用します。 –