1

次のカスタムルートがあります(これは正常に機能します)。

Router::connect('/:city', array('controller' => 'dealers', 'action' => 'index'), array('city' => '[a-z]+'));

このルートで、私はページ2、3、…を取得しようとしています。

Router::connect('/:city/:id', array('controller' => 'dealers', 'action' => 'index'),
    array(
        'pass' => array('city', 'id'),
        'city' => '[a-z]+',
        'id' => '[0-9]+'
        )
);

ここでの最初の問題は、 domain.com /washington / 2と入力すると、IDがPaginationに渡されず、ページ1が表示されることです。

2番目の問題は、PaginationHelperに上記のリンクを記述させられないことです。私の見解でこれを試してみると:

$this->Paginator->options(array
    ('url'=> array(
        $city[0]['City']['url'],
        $this->params['id']
        )
    )
);

それはまだ私に与えます:

http://domain.com/dealers/index/washington/page:2

これが簡単なことではない場合は事前に謝罪しますが、私はこれに不慣れであり、ここで利用可能な質問/回答、またはドキュメントでそれを理解することができませんでした。

更新1:

domain.com/washington/page/2に対して次のことを試しましたが、ページ付けページ1にルーティングされるだけです。

Router::connect('/:city/:slug/:id', 
    array('controller' => 'dealers', 'action' => 'index'),
    array(
        'pass' => array('city', 'slug', 'id'),
        'city' => '[a-z]+',
        'slug' => '[a-z]+',
        'id' => '[0-9]+'
        )
);

アクションでは、私はこれを行っています:

public function index($slug = null, $id = null) {some code}

私が追加したビューで:

$this->Paginator->options(array('url' => $this->passedArgs));

それでも運が悪いので、誰かが助けてくれたらとても嬉しいです!

4

2 に答える 2

2

これをAppController(beforeFilter)に追加することで、最終的にURLdomain.com/washington/page/2を機能させることができました。

if (isset($this->request->params['page'])) {
 $this->request->params['named']['page'] = $this->request->params['page'];
}

そして、このルートを追加することによって:

Router::connect('/:city/page/:page', 
    array('controller' => 'dealers', 'action' => 'index'),
    array(
        'pass' => array('city', 'page'),
        'city' => '[a-z]+',
        'page' => '[0-9]+'
        )
);

しかし、私はここで何が起こっているのか、そしてこれがそれを行う良い方法であるかどうかを本当に理解していません。誰かが簡単に説明できれば、私は知りたいと思います。

于 2012-10-17T09:31:40.197 に答える
0

上記の私のコメントを参照してください:)

また、これを使用することもできます。

$this->Paginator->options(array('url' => $this->passedArgs));

これは基本的に、URLからページネーターヘルパーに引数を渡します。

于 2012-10-16T15:37:32.543 に答える