2

zf2でのzendのページネーションとルーティングに問題があります。フィードバック項目の詳細とそのサブ項目(アクション)の一覧を同じページに表示したいのですが。私のルートコードは以下の通りです

$routes['dashboard_inbox_actions'] =  array(
    'type'      => 'segment',
    'options'   => array(
        'route' => '/dashboard/inbox/detail[/:feedback[/actions/page/:page]]',
        'constraints' => array(  
            'feedback'     => '[0-9]+',
            'page'         => '[0-9]+',
        ),
        'defaults' => array(      
             '__NAMESPACE__' => 'Dashboard\Controller',
            'controller'    => 'inbox' ,
            'action'        => 'detail',                
            'feedback'      => 0 ,
            'page'          => 1
        ),
    ),
);

私は次のようなURLを渡します

/dashboard/inbox/detail/4

リストページで、サブアイテムの提供されたページをレンダリングします。

<?php echo $this->paginationControl($this->paginator, 'Sliding' ); ?>

これは、フィードバックIDが0のページングURLを作成します(これは私の問題です)

/dashboard/inbox/detail/0/actions/page/2
/dashboard/inbox/detail/0/actions/page/3

URLを手動で貼り付けます

 /dashboard/inbox/detail/4/actions/page/2

2ページ目をアクティブアイテムとして表示します。私のコントローラーコードは正常に機能し、結果が得られますが、それでもpaginationControlはフィードバックID0のURLを作成します。

4

1 に答える 1

7

paginationControlビューヘルパーの4番目のパラメーターを使用する必要があります。

<?php 
    echo $this->paginationControl($this->paginator, 'Sliding',
          'my_pagination_control', array('route' => 'paginator_route')); 
?>

パラメータをビューパーシャルに渡すことができます。たとえば、ルート名をパススルーして、正しいルートを使用してyoruリンクを生成できるようにします。

次に、ビューパーシャル内でこれをURLヘルパーで使用できます。

<?php echo $this->url($this->route, array('page' => $this->first), FALSE, TRUE) ?>

参照: http: //framework.zend.com/manual/2.0/en/modules/zend.view.helpers.html#url-helper ここで、URLヘルパーが現在一致するパラメーターを使用できることを確認できます。

url($name, $urlParams, $routeOptions, $reuseMatchedParams)

$ reuseMatchedParamsをtrueに設定すると、現在一致しているパラメーターをデフォルト値として使用できるようになります。

于 2013-02-04T13:11:29.597 に答える