2012-01-12 5 views
3

я использую Zend Paginator для пагинации в моем приложении здесь это действие, которое делает этопагинация через Zend Paginator дает ошибку

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->paginator=$paginator; 
    } 

и это мнение для этого действия

<table border="1" align="center"> 
<tr> 
    <th>Task Name</th>  
    <th>Task Assign To</th> 
    <th>Action</th>  
</tr> 
    <?php 
    foreach($this->paginator as $record){ ?> 
    <tr> 
    <td><?php echo $record['task_name']?></td> 
    <td><?php echo $record['task_assign']?></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'); ?> 

по делая так, что дает мне эту ошибку

Fatal error: Cannot use object of type stdClass as array in C:\xampp\htdocs\zend_login\application\views\scripts\task\list.phtml on line 47 

линия 47 относится к

<td><?php echo $record['task_name']?></td> 

чем я использовал эту функцию для преобразования объекта в массив

function objectToArray($object){ 
if(!is_object($object) && !is_array($object)){ 
    return $object;} 
if(is_object($object)){ 
$object = get_object_vars($object);} 
return array_map('objectToArray', $object);} 
$paginator = objectToArray($this->paginator); 

теперь я изменить это в моем коде

foreach($paginator as $record){ 

, а также этот

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

, но его подачи me this error now

Catchable fatal error: Argument 1 passed to Zend_View_Helper_PaginationControl::paginationControl() must be an instance of Zend_Paginator, array given in C:\xampp\htdocs\zend_login\library\Zend\View\Helper\PaginationControl.php on line 88 

Пожалуйста, вы можете сказать, что я не хватает Я новичок в Зенд так, пожалуйста, не возражаю мой неудобный вопрос это мой ErrorController.php

class ErrorController extends Zend_Controller_Action{ 
public function errorAction() 
{ 
    $errors = $this->_getParam('error_handler'); 

    switch ($errors->type) { 
     case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE: 
     case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: 
     case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: 

      // 404 error -- controller or action not found 
      $this->getResponse()->setHttpResponseCode(404); 
      $this->view->message = 'Page not found'; 
      break; 
     default: 
      // application error 
      $this->getResponse()->setHttpResponseCode(500); 
      $this->view->message = 'Application error'; 
      break; 
    } 

    // Log exception, if logger available 
    if ($log = $this->getLog()) { 
     $log->crit($this->view->message, $errors->exception); 
    } 

    // conditionally display exceptions 
    if ($this->getInvokeArg('displayExceptions') == true) { 
     $this->view->exception = $errors->exception; 
    } 

    $this->view->request = $errors->request; 
} 

public function getLog() 
{ 
    $bootstrap = $this->getInvokeArg('bootstrap'); 
    if (!$bootstrap->hasPluginResource('Log')) { 
     return false; 
    } 
    $log = $bootstrap->getResource('Log'); 
    return $log; 
} 
} 
+1

Вместо запуска '$ запись 'через вашу функцию' objectToArray() ', где я предполагаю, что проблема - не могли бы вы просто получить доступ к значениям как' $ record-> task_name'? –

ответ

3

Вам просто нужно назвать его как объект :

<td><?php echo $record->task_name; ?></td> 

UPDATE: все остальные ошибки решаются в чате

+0

не работает, я сделал это, но теперь даю мне эту ошибку. Неустранимая ошибка: вызовите функцию-член hasPluginResource() для не-объекта в приложении \ controllers \ ErrorController.php в строке 67. Я думаю, что я делаю что-то неправильно, что я не знаю что его –

+0

Вы удалили эту строку? Здесь не нужно - $ paginator = objectToArray ($ this-> paginator); – BartekR

+0

Да, конечно, я удалил это. –

Смежные вопросы