2

カスタム zend ルーターに問題があります。これは私の猫のルーターです

$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute('categories', new Zend_Controller_Router_Route(
        'video/k/:id/:title',array(
            'controller' => 'video',
            'module' => 'default' ,
            'action' => 'k',
            'id' => '',
            'title' =>''
            )
    ));

$params = Zend_Controller_Front::getInstance()->getRequest()->getParams();

htttp://dev.dummy.com/video/k/1/fooを試すと正常に動作しますが、

$this->url(array_merge($params, array('order' => 'title'))) or
$this->url(array_merge($params, array('order' => 'title')),'categories')
$this->url(array_merge($params, array('order' => 'title')),'categories', true)

htttp://dev.dummy.com/video/k/1/foo/order/titleを返しません htttp://dev.dummy.com/video/k/1/foo を返します。

この助けを願っています。ありがとう。

4

2 に答える 2

0

$reseturl-helperの 3 番目のパラメーターを次のように設定してみてくださいtrue

$this->url(array_merge($params, array('order' => 'title')), 'categories', true)

これにより、デフォルトのパラメータがリセットされます。

( http://framework.zend.com/manual/1.12/en/zend.view.helpers.html#zend.view.helpers.initialのドキュメント)

于 2012-11-04T10:45:36.397 に答える
0

array_merge を実行すると、整数キーが最初からリセットされます。array_merge の代わりに配列を追加するだけです。

    $router->addRoute('categories', new Zend_Controller_Router_Route(
    'index/test/:id/:title',array(
        'controller' => 'index',
        'module' => 'default' ,
        'action' => 'test',
        'id' => '',
        'title' => ''

        )
     ));

   echo $this->url(array('order' => 'title')); 

http://dev.dummy.com/video/k/1/foohttp://dev.dummy.chom/video/k/1/foo/order/title/で試してみました。どちらの場合も、URL ヘルパーの出力は - htttp://dev.dummy.com/video/k/1/foo/order/title でした。

于 2012-11-04T19:19:37.263 に答える