2014-03-27 1 views
1

joomla 페이지 매김을 내 자신의 구성 요소 및 해당 joomla 2.5 잘 작동하도록 만들었습니다 및 joomla 3.0 동일한 데이터를 표시하고 또한 페이지 매김을 정확하게 표시하지만 문제가 동일한 사용하고있다 아무 페이지 나 클릭 할 때입니다. 다음 또는 이전 페이지로 가기 위해 작동하지 않는 양식은 같은 페이지에 남아 있습니다.joomla 3.0 Joomla 페이지 매김이 작동하지 않습니다

여기는 페이지 매김을 만드는 데 사용한 코드입니다.

model.php 


    defined('_JEXEC') or die('Restricted access'); 

    jimport('joomla.application.component.modellist'); 


    class eventsModelEvents extends JModelLegacy { 

    var $_total = null; 
    var $_pagination = null; 
    function __construct() 
    { 
      parent::__construct(); 

      $mainframe = JFactory::getApplication(); 

      // Get pagination request variables 
      $limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int'); 
      $limitstart = JRequest::getVar('limitstart', 0, '', 'int'); 

     // In case limit has been changed, adjust it 
      $limitstart = ($limit != 0 ? (floor($limitstart/$limit) * $limit) : 0); 

      $this->setState('limit', $limit); 
      $this->setState('limitstart', $limitstart); 
    } 
    function getPagination() 
    { 
     // Load the content if it doesn't already exist 
     if (empty($this->_pagination)) { 
      jimport('joomla.html.pagination'); 
      $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit')); 
     } 
     return $this->_pagination; 
    } 
    function getTotal() 
    { 
     // Load the content if it doesn't already exist 
     if (empty($this->_total)) { 
      $query = $this->_buildQuery(); 
      $this->_total = $this->_getListCount($query);  
     } 
     return $this->_total; 
    } 
    function getData() 
    { 
     // if data hasn't already been obtained, load it 
     if (empty($this->_data)) { 
      $query = $this->_buildQuery(); 
      $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit'));  
     } 
     return $this->_data; 
    } 
    function _buildQuery() 
     { 
       // Create a new query object.   
       $db = JFactory::getDBO(); 
       $query = $db->getQuery(true); 
       // Select some fields 
       $query->select('*'); 
       // From the hello table 
       $query->from('#__events'); 
       $query->order('date DESC'); 
       return $query; 
     } 
    function getEvents(){ 
      $db = $this->getDBO(); 

      $db->setQuery('SELECT * from #__events'); 
      $events = $db->loadObjectList(); 

      if ($events === null) 
        JError::raiseError(500, 'Error reading db'); 

      return $events; 
     } 
     function getEvent($id){ 
      $query = ' SELECT * FROM #__events '. 
          ' WHERE id = '.$id; 
      $db = $this->getDBO(); 
      $db->setQuery($query); 
      $event = $db->loadObject();   

      if ($event === null) 
        JError::raiseError(500, 'Event with ID: '.$id.' not found.'); 
      else 
        return $event;   
     } 
     function saveEvent($event){ 

     $db = $this->getDBO(); 
     $uploaded_path = JPATH_COMPONENT. "/images/"; 
     if($_FILES["event_image"]["tmp_name"]){ 
       if ($_FILES["event_image"]["error"] > 0){ 
        return $_FILES["event_image"]["error"] . "<br>"; 
       } else { 
        move_uploaded_file($_FILES["event_image"]["tmp_name"],$uploaded_path . $_FILES["event_image"]["name"]);     
        $event['event_image'] = $_FILES["event_image"]["name"]; 
       } 

     } else { 
      $event['event_image'] = $event['event_stored_image']; 

     } 


     $event['event_date'] = date('Y-m-d H:i:s', strtotime($event['event_date'])); 
     foreach($event as $key => $value){ 
      $event[$key] = mysql_real_escape_string($value); 
     } 

     if(($event['event_name'] != NULL) && ($event['event_image'] != NULL) && ($event['event_date'] != NULL) && ($event['event_description'] != NULL)){ 

      if(isset($event['event_id'])){ 
      $query = "UPDATE #__events SET name = '".$event['event_name']."',status = '".$event['event_status']."',image = '".$event['event_image']."',date = '".$event['event_date']."',description = '".$event['event_description']."',reservation = '".$event['event_reservation']."' WHERE id =" . $event['event_id']; 
     } else { 
      $query = "INSERT INTO #__events (name,status,image,date,description,reservation) VALUES ('".$event['event_name']."','".$event['event_status']."','".$event['event_image']."','".$event['event_date']."','".$event['event_description']."', '".$event['event_reservation']."')"; 
     } 

      $db->setQuery($query); 
      if (!$db->query()){ 
         $errorMessage = $this->getDBO()->getErrorMsg(); 
         JError::raiseError(500, 'Error inserting event: '.$errorMessage); 
       }  
     } else { 

      return "Please Fill All fields."; 
     } 

    } 

    function deleteEvents($arrayIDs) 
     { 
        $query = "DELETE FROM #__events WHERE id IN (".implode(',', $arrayIDs).")"; 
        $db = $this->getDBO(); 
        $db->setQuery($query); 
        if (!$db->query()){ 
          $errorMessage = $this->getDBO()->getErrorMsg(); 
          JError::raiseError(500, 'Error deleting events: '.$errorMessage); 
        }     
     } 
    function publishEvents($arrayIDs) 
     { 
        $query = "UPDATE #__events SET status = '1' WHERE id IN (".implode(',', $arrayIDs).")"; 
        $db = $this->getDBO(); 
        $db->setQuery($query); 
        if (!$db->query()){ 
          $errorMessage = $this->getDBO()->getErrorMsg(); 
          JError::raiseError(500, 'Error publishing events: '.$errorMessage); 
        }     
     } 
    function unpublishEvents($arrayIDs) 
     { 
        $query = "UPDATE #__events SET status = '0' WHERE id IN (".implode(',', $arrayIDs).")"; 
        $db = $this->getDBO(); 
        $db->setQuery($query); 
        if (!$db->query()){ 
          $errorMessage = $this->getDBO()->getErrorMsg(); 
          JError::raiseError(500, 'Error publishing events: '.$errorMessage); 
        }     
     } 
} 

view.html.php 
jimport('joomla.application.component.view'); 

class eventsViewEvents extends JViewLegacy { 
    protected $categories; 
    protected $items; 
    protected $pagination; 
    protected $state; 
    function display($tpl = null) 

    { 



     $this->categories = $this->get('CategoryOrders'); 
     $this->state  = $this->get('State'); 
     $this->addToolBar(); 
     // Get data from the model 
     $events = $this->get('Data'); 
     $pagination =$this->get('Pagination'); 
     // push data into the template 
     $this->events = $events;  
     $this->assignRef('pagination', $pagination); 
     parent::display($tpl); 

    } 
    function add($tpl = null){ 
     $this->addToolBar(); 


     parent::display($tpl); 

    } 

     protected function addToolbar() 
    { 
     require_once JPATH_COMPONENT . '/helpers/events.php'; 

     $canDo = EventsHelper::getActions($this->state->get('filter.category_id')); 
     $user = JFactory::getUser(); 
     JToolBarHelper::title('Event Manager', 'generic.png'); 
     JToolBarHelper::addNew('add'); 
     if (count($user->getAuthorisedCategories('com_events', 'core.create')) > 0) 
     { 
      //JToolBarHelper::addNew('add'); 
     } 

     if (($canDo->get('core.edit'))) 
     { 
      JToolBarHelper::editList('edit'); 
     } 

     if ($canDo->get('core.edit.state')) 
     { 
      if ($this->state->get('filter.state') != 2) 
      { 
       JToolBarHelper::divider(); 
       JToolBarHelper::publish('publish', 'JTOOLBAR_PUBLISH', true); 
       JToolBarHelper::unpublish('unpublish', 'JTOOLBAR_UNPUBLISH', true); 
      } 


     } 



     if ($this->state->get('filter.state') == -2 && $canDo->get('core.delete')) 
     { 
      JToolBarHelper::deleteList('', 'remove', 'JTOOLBAR_EMPTY_TRASH'); 
      JToolBarHelper::divider(); 
     } 
     elseif ($canDo->get('core.edit.state')) 
     { 
      JToolBarHelper::trash('remove'); 
      JToolBarHelper::divider(); 
     } 
    } 

    function displayEdit($eventId,$tpl = NULL) 
    {        

     JToolBarHelper::title('Event'.': [<small>Edit</small>]'); 
     JToolBarHelper::save(); 
     JToolBarHelper::cancel(); 

     $model = $this->getModel(); 
     $event = $model->getEvent($eventId); 
     $this->event = $event; 

     parent::display($tpl); 
    } 
    function displayAdd($tpl = NULL){ 
      JToolBarHelper::title('Event'.': [<small>Add</small>]'); 
      JToolBarHelper::save(); 
      JToolBarHelper::cancel(); 


      parent::display($tpl); 
    } 

    } 

    default.php 

    <td colspan="9"><?php echo $this->pagination->getListFooter(); ?></td> 

은 아웃을 그해야 죄송합니다, 무엇이 잘못되었는지 또는 내가

답변

0

대신 JModelLegacy의 클래스 JModelList을 확장 놓친 거지 걸 수 있습니다.

+0

를 볼 경우이 줄. 같은 문제 –

+0

getPagination() 메서드를 모델 클래스에서 제거해보십시오. JModelList 클래스의 getPagination() 메소드를 오버라이드하여 코어 페이지 매김 기능에 의해 이미 수행 된 모든 작업을 오버라이드하고이를 무효화합니다. 부모 클래스가 페이지 매김 할 원시 데이터에 액세스 할 수 있도록하려면 _buildQuery() 메서드의 이름을 getListQuery()로 바꿔야합니다. –

+0

getPagination()을 제거하고 _buildQuery()를 getListQuery()로 이름을 변경했지만 여전히 효과가 없습니다. 같은 빈 페이지가 있지만 '__construct() 제거 할 때 모든 잘 작동하지만 페이지 매김없이. –

1

필요한 Javascript 프레임 워크를 사용할 수 없기 때문일 수 있습니다. 이 경우에 대비하여 자바 스크립트 콘솔을 확인할 수 있습니다.

그 라인 전에 JViewLegacy을 확장 뷰의 경우, 경우 :

$this->pagination = $this->get('Pagination'); 

삽입 행 아래 : 또한

JHtml::_('behavior.framework'); 

는, 템플릿이 필요한 프레임 워크를 제거 있지 않은지 확인 .

unset($doc->_scripts[JURI::root(true) . '/media/system/js/core.js']); 

주석으로 당신이 당신의 템플릿이 도움이 index.php

희망 :) 나는 또한 JModelList 아무것도하지만, 변화를 시도

+0

와우 .. 나는 질문의 ** 날짜 **를 보았다. .. Meh .. 그것이 다른 누군가를 돕기를 바랍니다. – MicroWise