私はZendFrameworkアプリケーションに取り組んでおり、http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework/のガイドを使用して、バニティルーティングを機能させましたが、ページネーションが機能しておらず、バニティURLガイドのどれも私がそれに触れることができませんでした。
私のバニティルートは'として設定されてい/:username/:filter/:pag
ます。最後の2つのパラメーターはオプションです。ページは正しく表示されています。「/jaimerump/ Badges / 2」はバッジの2ページ目に移動しますが、次のページのURLがわからないため、ページネーターが機能していません。すべてのZendページ付けチュートリアルの標準paginationControl.phtmlファイルを使用しています。コードは次のとおりです。
<?php if ($this->pageCount): ?>
<div class="paginationControl" id="paginationControl">
<!-- Previous page link -->
<?php if (isset($this->previous)): ?>
<a href="<?php echo $this->url(array('page' => $this->previous)); ?>" id="previous">
< Previous
</a> |
<?php else: ?>
<span class="disabled">< Previous</span> |
<?php endif; ?>
<!-- Infinite Scroll doesn't use numbered page links -->
<!-- Next page link -->
<?php if (isset($this->next)): ?>
<a id="next" href="<?php echo $this->url(array('page' => $this->next)); ?>" >
Next >
</a>
<?php else: ?>
<span class="disabled">Next ></span>
<?php endif; ?>
</div>
<?php endif; ?>
'/ jaimerump / Badges / 3'を$this->url()
返す代わりに、'/'を返します。これは私のカスタムルートクラスと関係があると確信しています。Tim Fountainのチュートリアルからmatch関数を変更し、クラスの名前をVanityRouteUserに変更して、modelsフォルダーに配置しましたが、それ以外はすべて同じです。マッチ機能:
public function match( $path, $partial = false )
{
/* User profile routes are of form /:username/:filter/:page
Where filter can be haves, wants, badges, etc.
*/
if ($path instanceof Zend_Controller_Request_Http) {
$path = $path->getPathInfo();
}
$path = trim($path, $this->_urlDelimiter);
$pathBits = explode($this->_urlDelimiter, $path);
if ( count($pathBits) < 1 ) {
return false;
}
// check database for this user
$result = DB::call()->fetchRow('SELECT user_id
FROM users
WHERE username = ?', $pathBits[0]);
if ($result) {
// user found
$values = $this->_defaults;
$values['username'] = $pathBits[0];
$values['page'] = ( empty( $pathBits[2] ) )?1:$pathBits[2]; //if they didn't provide a page
// figure out which action based on second segment
$filter = $pathBits[1];
if( empty( $filter ) || $filter == 'default'
|| $filter == 'haves' || $filter == 'wants' ){
//Looking for user's haves, wants, or both
$values['action'] = 'index';
$values['filter'] = ( empty($filter) )?'default':$filter; //To catch the blank
}
else if( $filter == 'badges' ){
//Looking for user's badges
$values['action'] = 'badges';
}
else if( $filter == 'shelves' ){
//Looking for user's shelves
$values['action'] = 'shelves';
}
else{
//Must be a shelf id
$values['action'] = 'index';
$values['filter'] = $filter;
}
return $values;
}
return false;
}
何$this->url()
ですか?ZendPaginatorでURL関数を見つけることができませんでした。そして、次のページのURLを取得するために、routeクラスの関数を呼び出していると想定しています。それはどの関数を呼び出していますか、そして私はそれをオーバーロードする必要がありますか?