Я работаю над приложением Zend Framework, и я просто получил свою маршрутную работу, используя руководство по адресу http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework/, но мое разбиение на страницы не работает, и ни один из правил тщеславия, мы смогли найти прикосновение к нему.Zend Framework Vanity Url Pagination не работает
Мой маршрут тщеславия настроен как /:username/:filter/:pag
', где последние 2 параметра являются необязательными. Страница отображается правильно: «/ jaimerump/badges/2» переместится на вторую страницу моих значков, но страница не работает, потому что она не может понять, какой должен быть URL-адрес следующей страницы. Я использую стандартный файл paginationControl.phtml из каждого Zend постраничного учебника, код здесь:
<?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/значков/3', $this->url()
возвращает '/'. Я уверен, что это связано с моим собственным классом маршрута. Я изменил функцию соответствия из учебника Tim Fountain, и я изменил имя класса на VanityRouteUser и поместил его в папку с моими моделями, но кроме этого все идентично. Функция соответствия:
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()
? Я не смог найти функцию url в Zend Paginator. И я предполагаю, что он вызывает некоторую функцию в классе маршрута, чтобы попытаться получить URL-адрес следующей страницы. Какую функцию он вызывает, и мне нужно перегружать его?
Рад, что вы получили его работу. FYI '$ this-> url()' вызывает стандартный помощник URL-адреса ZF, который, в свою очередь, вызывает сборку для соответствующего маршрута. Эта функция может возвращать то, что вы хотите, поэтому вы можете легко изменить свое решение, чтобы включить только параметры фильтра и страницы, если они были предоставлены. –
@TimFountain в этом случае, что означает '$ this'? Из всех других функций и свойств, которые называются, кажется, что это должно быть paginator. Указывает ли paginator автоматически проверять все помощники, когда вы пытаетесь вызвать функцию, которой у нее нет или что-то еще? – jaimerump
'$ this' будет экземпляром' Zend_View'. В случае, когда он пытается отобразить частицу, paginator будет присваивать все остальные vars виду (предположительно через частичный помощник). –