Zend Paginator делает другие ссылки и Action Calling связанными с URL - PullRequest
1 голос
/ 13 января 2012

Я новичок в ZF. Я использовал Zend Paginator в моем первом проекте. Он отлично работает, то есть переключает ч / б страницы с правильным результатом, но проблема в том, что у меня есть и другие ссылки в этом представлении.

<?php include "header.phtml"; ?>
<h1><?php echo  $this->escape($this->title);?></h1>
<h2><?php echo $this->escape($this->description);?></h2>
<a href="register">Register</a>
<table border="1" align="center">
<tr>
  <th>User Name</th>      
  <th>First Name</th>     
  <th>Last Name</th>      
  <th>Action</th>     
</tr>
 <?php 
 foreach($this->paginator as $record){?>  
<tr>
  <td><?php echo $record->user_name;?></td>
  <td><?php echo $record->first_name;?></td>      
  <td><?php echo $record->last_name;?></td>   
  <td>
    <a  href="edit/id/<?php echo $record->id;?>">Edit</a>
    |
    <a  href="del/id/<?php echo $record->id;?>">Delete</a>      
  </td>   
</tr> 
  <?php } ?>
 </table>

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

 <?php include "footer.phtml"; ?>

, как я уже сказал, нумерация страниц работает и работает нормально, но когда я нажимаю на эти ссылки

 <a  id="edit_link" href="edit/id/<?php echo $record->id;?>">Edit</a>
                      or
 <a id="delete_link" href="del/id/<?php echo $record->id;?>">Delete</a>
                      or
 <a href="register">Register</a>

, это не вызывает требуемого действия, вместо этого он делает мой URL таким, как этот

(initial link) http://localhost/zend_login/web_root/index.php/task/list

после нажатия на любую из приведенных выше ссылок, она выглядит следующим образом:

 http://localhost/zend_login/web_root/index.php/task/list/page/edit/id/8
 http://localhost/zend_login/web_root/index.php/task/list/page/edit/id/edit/id/23
 http://localhost/zend_login/web_root/index.php/task/list/page/edit/id/edit/id/register        http://localhost/zend_login/web_root/index.php/task/list/page/edit/id/edit/id/del/id/12

note не происходит, когда страница отображается впервые, но когда я нажимаю на любую ссылку на страницуон делает это вначале, он идет к обычному действию и отображает представление ... любая помощь ЗДЕСЬ ДЕЙСТВИЕ

 public function listAction(){

      $registry = Zend_Registry::getInstance();  
      $DB = $registry['DB'];
      $sql = "SELECT * FROM task ORDER BY task_name ASC";
      $result = $DB->fetchAll($sql);
      $page=$this->_getParam('page',1);
      $paginator = Zend_Paginator::factory($result);
      $paginator->setItemCountPerPage(3);
      $paginator->setCurrentPageNumber($page);
      $this->view->assign('title','Task List');
      $this->view->assign('description','Below, are the  Task:');
      $this->view->paginator=$paginator;
     }

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Попробуйте:

// controller
$this->view->controllerName = $this->getRequest()->getControllerName();

// view script
<a href="<?php echo $this->controllerName . '/edit/id/' . $record->id);?>">Edit</a> 
| 
<a href="<?php echo $this->controllerName . '/del/id/' . $record->id);?>">Delete</a> 

или

<a href="<?php echo $this->baseUrl($controllerName . '/edit/id/' . $record->id);?>">Edit</a> 
| 
<a href="<?php echo $this->baseUrl($controllerName . '/del/id/' . $record->id);?>">Delete</a> 

Во втором примере используется baseUrl() помощник вида, который использует настройку baseUrl на фронтальном контроллере.Если вы не установили baseUrl в вашем frontController, он пытается угадать.Поскольку вы не используете функциональность начальной загрузки для установки baseUrl, вы можете сделать следующее в index.php (не обязательно):

$frontController = Zend_Controller_Front::getInstance(); 
$frontController->setBaseUrl('/');

Третья возможность с использованием url() помощника вида:

<a href="<?php echo $this->url(array(
    'controller' => $controllerName,
    'action'     => 'edit',
    'id'         => $record_->id
)); ?>">Edit</a> 
| 
<a href="<?php echo $this->url(array(
    'controller' => $controllerName,
    'action'     => 'del',
    'id'         => $record_->id
));?>">Delete</a> 
0 голосов
/ 17 января 2012

добавьте это в ваше действие

$request = $this->getRequest();
$this->view->assign('url', $request->getBaseURL());

и замените ваши ссылки на эти

<a href="<?php echo $this->url."/task/register"?>">Add a Task</a>
<a href="<?php echo $this->url.'/task/edit/id/'.$record->id;?>">Edit</a>
<a href="<?php echo $this->url.'/task/del/id/'.$record->id;?>">Delete</a>
...