1

うまくいけば、誰かがここで私を助けてくれます。

バスケットへの追加を処理する Zend Router があります。現在、カスタマイザー モジュールを構築しているため、ユーザーは製品の指定されたセクションにさまざまな色のパーツをいくつでも追加できます。

私の基本的なURLはこのようなものです

http://www.domain.com/shop/add/custom/size/type

私の現在のrouter.iniはこのようなものです

resources.router.routes.shopAddCustom.route = shop/add/custom/:size/:type/*
resources.router.routes.shopAddCustom.defaults.module = shop
resources.router.routes.shopAddCustom.defaults.controller = order
resources.router.routes.shopAddCustom.defaults.action = add
resources.router.routes.shopAddCustom.defaults.product = builder

私が本当に対応したいのは、このような URL です。

http://www.domain.com/shop/add/custom/size/type/part3/blue/right/part2/part6/both/part7/red/part1/left/orange/

基本的に、サイズ/タイプ/の背後にあるすべては、パーツ、色、またはセクション (右、左、両方) です。

サイズ/タイプの後にすべての url-path-parts の単一の配列を取得するにはどうすればよいですか?

array(0 => 'part3', 1 => 'blue', 2 => 'right', 3 => 'part2', 4 => 'part6' [...] );

使用するだけで$this-_request->getParams();、このような配列が得られます

array('part3' => 'blue', 'right' => 'part2', 'part6' => 'both' [...] );

その配列を実行して、すべてのキーと値を値として新しい配列に追加することができます。問題は、url-path-parts の数が奇数の場合、最後の部分が params に返されず、空の変数として認識され、params 配列に追加されないことです。

どんなアイデアでも大歓迎です:)

4

1 に答える 1

1

まあ、これは私がこれを行うことができると思う方法です-他の解決策はまだ歓迎されています!

$size = $this->_getParam('size');
$type = $this->_getParam('type');

$baseRouterUrl = $this->_helper->url->url(array('size' => $size, 'type' => $type), 'shopAddCustom', true);
$pathInfo = dirname($this->_request->getPathInfo() . '/.');

$pathInfo = str_replace($baseRouterUrl, '', '/' . $pathInfo);
$pathInfo = trim($pathInfo, '/\\');

$pathArr = explode('/', $pathInfo);

これが結果の配列です。

array(11) {
  [0]=>
  string(5) "part3"
  [1]=>
  string(4) "blue"
  [2]=>
  string(5) "right"
  [3]=>
  string(5) "part2"
  [4]=>
  string(5) "part6"
  [5]=>
  string(4) "both"
  [6]=>
  string(5) "part7"
  [7]=>
  string(3) "red"
  [8]=>
  string(5) "part1"
  [9]=>
  string(4) "left"
  [10]=>
  string(6) "orange"
}
于 2010-09-07T11:17:17.847 に答える