3

基本的にすべてをキャッチするルートを作成または見つけようとしています。私が必要としているのは、次のようなものをルーティングできるものです。

/some-page/some-childpage/another-childpage
/another-page
/yet-anotherpage/page

これらのURLは、モジュール自体には関連していません。管理者が任意のURLでページを作成できるようになっています。

ワイルドカードルーティングと子ワイルドカードルートを使用して現在ルートをキャッチするものがありますが、URLビューヘルパーで使用すると、「url」パラメーター内でフォワードスラッシュがエンコードされます。基本的に:

$this->url( 'public_page', array( 'url' => 'foo/bar' ) )

出力中/foo%2Fbarです。

/ sを許可しないだけでなく、urlパラメータを取得しようとすると、最初の/までのクエリ文字列が返されます。

どんな助けや提案も素晴らしいでしょう!

よろしく、マイケル

4

1 に答える 1

0

任意の数のセグメントでそれができるかどうかはわかりません。予想される最大量のセグメントでセグメントルートを指定し、それらすべてをオプションにすることもできますが、多くのセグメントを使用しようとしている場合、それは汚い方法のようです.

'route' => '/:controller[[[[/:action]/:third]/:fourth]/:fifth]',
    'constraints' => array(
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]+',
        'action'     => '[a-zA-Z][a-zA-Z0-9_-]+',
    ),
    'defaults' => array(
        'controller' => 'Application\Controller\IndexController',
        'action'     => 'index',
        'third'      => 'something',
        'fourth'     => 'something-else',
    ),

正規表現ルートで何かを成し遂げることができるかもしれませんが、これもおそらく厄介です。

http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html#zend-mvc-router-http-regex

とにかく深いURLはあまり良くないので、より良いURL構造を使用することをお勧めします。

于 2013-02-13T09:18:06.343 に答える