2014-06-26 30 views
1

我正在爲Joomla開發一個MVC組件! 2.5,我想在後端添加一些可排序的列。爲了這個目標,我試着做了下:可排列的列Joomla

http://docs.joomla.org/Adding_sortable_columns_to_a_table_in_a_component

而且我得到了一個錯誤「查看沒有發現[名稱,類型,前綴]」。在這種情況下,我都在尋找一個解決方案,我找了下:

http://forum.joomla.org/viewtopic.php?p=2638695

繼我已刪除了我的「形式」,「行動」的指示。在這種情況下,我的列是可排序的,但會出現另一個問題。如果我刪除了「表單」的「動作」,那麼我的工具欄中的「編輯按鈕」不起作用。

我認爲必須有另一種解決方案,因爲我需要工作「編輯按鈕」和可排序的列也。我在這裏尋找一些類似的問題,我已經應用了以下信息:

How to add sortable columns in a Joomla component (table), both ASC and DESC with an arrow

&

Joomla 2.5 -Adding sortable columns to a table in a component

但我的問題persits。我能做什麼??謝謝。

我的相關源代碼,是NEXT:

com_inscripciones /管理/模型/ anuals.php

<?php 

// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 
// import the Joomla modellist library 
jimport('joomla.application.component.modellist'); 

/** 
* Inscripciones List Model 
*/ 
class InscripcionesModelAnuals extends JModelList 
{ 

     public function __construct($config = array()) 
     { 
       if (empty($config['filter_fields'])) { 
         $config['filter_fields'] = array(
           'nombre', 
           'fecha_nac', 
           'reserva' 
         ); 
       } 
       parent::__construct($config); 
     } 

     protected function populateState($ordering = null, $direction = null) 
     { 
       parent::populateState('id', 'asc'); 
     } 

     /** 
     * Method to build an SQL query to load the list data. 
     * 
     * @return  string An SQL query 
     */ 
     protected function getListQuery() 
     { 
       // Create a new query object.   
       $db = JFactory::getDBO(); 
       $query = $db->getQuery(true); 
       // Select some fields 
       $query->select('id,nombre,apellidos,nif,fecha_nac,reserva,validacion,clave'); 
       // From the hello table 
       $query->from('#__anual'); 

       // Add the list ordering clause.      
       $query->order($db->escape($this->getState('list.ordering', 'nombre')).' '.$db->escape($this->getState('list.direction', 'ASC'))); 

       return $query; 
     } 
} 
?> 

com_inscripciones /管理/視圖/ anuals/view.html。 php

<?php 

// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 

// import Joomla view library 
jimport('joomla.application.component.view'); 

/** 
* Anuals View 
*/ 
class InscripcionesViewAnuals extends JView 
{ 
     /** 
     * display method of Inscripciones view 
     * @return void 
     */ 
     function display($tpl = null) 
     { 
       // Get data from the model 
       $items = $this->get('Items'); 
       $pagination = $this->get('Pagination'); 
     $state = $this->get('State'); 

      $this->sortDirection = $state->get('list.direction'); 
     $this->sortColumn = $state->get('list.ordering'); 

       // Check for errors. 
       if (count($errors = $this->get('Errors'))) 
       { 
         JError::raiseError(500, implode('<br />', $errors)); 
         return false; 
       } 

       // Assign data to the view 
       $this->items = $items; 
       $this->pagination = $pagination; 

       // Set the toolbar 
       $this->addToolBar(); 

       // Display the template 
       parent::display($tpl); 
     } 

     /** 
     * Setting the toolbar 
     */ 
     protected function addToolBar() 
     { 
     JToolBarHelper::title(JText::_('Inscripciones Manager: Curso Anual'), 'inscripciones'); 
     JToolBarHelper::spacer('10'); 
     JToolBarHelper::divider(); 
     JToolBarHelper::spacer('10'); 
     JToolBarHelper::editList('anual.edit'); 
     JToolBarHelper::spacer('10'); 
     JToolBarHelper::divider(); 
     JToolBarHelper::spacer('10'); 
     JToolBarHelper::deleteList('¿Desea eliminar esta inscripción?', 'anuals.delete'); 
     JToolBarHelper::spacer('20'); 
     } 
} 
?> 

com_inscripciones /管理/視圖/ anuals/TMPL /如default.php

<?php 

// No direct access 
defined('_JEXEC') or die('Restricted access'); 
JHtml::_('behavior.tooltip'); 
JHtml::_('behavior.multiselect'); 
?> 

<form action="<?php echo JRoute::_('index.php?option=com_inscripciones&view=anuals$layout=default'); ?>"method="post" name="adminForm"id="inscripciones-form"> 
    <table class="adminlist"> 
      <thead> 
       <tr> 
        <th width="5"> 
          <?php echo JText::_('ID'); ?> 
        </th> 
        <th width="20"> 
          <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($this->items); ?>);" /> 
        </th>     
        <th> 
          <?php echo JHtml::_('grid.sort', 'NOMBRE', 'nombre', $this->sortDirection, $this->sortColumn); ?> 
        </th> 
        <th> 
          <?php echo JText::_('APELLIDOS'); ?> 
        </th> 
        <th> 
          <?php echo JText::_('NIF'); ?> 
        </th> 
        <th> 
          <?php echo JHtml::_('grid.sort', 'FECHA NAC.', 'fecha_nac', $this->sortDirection, $this->sortColumn); ?> 
        </th> 
        <th> 
          <?php echo JHtml::_('grid.sort', 'RESERVA', 'reserva', $this->sortDirection, $this->sortColumn); ?> 
        </th> 
       </tr> 
      </thead> 
      <tfoot> 
       <tr> 
        <td colspan="3"></td> 
       </tr> 
      </tfoot> 
      <tbody> 
       <?php foreach ($this->items as $i => $item): ?> 
      <tr class="row<?php echo $i % 2; ?>"> 
         <td> 
         <?php echo $item->id; ?> 
         </td> 
         <td> 
           <?php echo JHtml::_('grid.id', $i, $item->id); ?> 
         </td> 
         <td> 
           <?php echo $item->nombre; ?> 
         </td> 
         <td> 
           <?php echo $item->apellidos; ?> 
         </td> 
         <td> 
           <?php echo $item->nif; ?> 
         </td> 
         <td> 
           <?php echo $item->fecha_nac; ?> 
         </td> 
         <td> 
           <?php echo $item->reserva; ?> 
         </td> 
        </tr> 
     <?php endforeach; ?> 
      </tbody> 
    </table> 
    <div> 
      <input type="hidden" name="task" value="" /> 
      <input type="hidden" name="boxchecked" value="0" /> 
      <input type="hidden" name="filter_order" value="<?php echo $this->sortColumn; ?>" /> 
      <input type="hidden" name="filter_order_Dir" value="<?php echo $this->sortDirection; ?>" /> 
      <?php echo JHtml::_('form.token'); ?> 
    </div> 

+0

請提供相關的源代碼,如果沒有我們只能猜測是什麼問題。 –

+0

OKEY。添加了相關的源代碼。謝謝。 – DominicS

+0

請幫忙! – DominicS

回答

0

模型我的查詢行看起來像

$query->order($db1->getEscaped($this->getState('list.ordering', 'ordering')).' '.$db1->getEscaped($this->getState('list.direction', 'ASC'))); 

和populateState包含

$orderCol = JRequest::getCmd('filter_order', 'ordering'); 
      $this->setState('list.ordering', $orderCol); 

,並在filter_fields構建體包含

$this->_order[] = JRequest::getVar('filter_order', 'fieldName', 'POST', 'cmd'); 
     $this->_order[] = JRequest::getVar('filter_order_Dir', 'asc', 'POST', 'word'); 

我遇到了一些麻煩,這些在我做了一個組件,只是很多東西,可以是錯誤的組合的一些意見的工作,但你會得到有。我用這個教程 http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Introduction

0

我想你已經發現了錯誤,但對於其他人,根據所提供的代碼:

<form action="<?php echo JRoute::_('index.php?option=com_inscripciones&view=anuals$layout=default'); ?>" ...> 

此行是錯誤的。您的查看電話是& view = anuals $ layout =默認

正確的是&視圖= anuals &佈局=默認

爲什麼會得到這個觀點錯誤的唯一原因。

請註明我的答案是正確的,如果這是你的問題早在2014年