Joomla Development Публикация/отмена публикации не работает

У меня есть простой компонент, следующий по большей части учебнику «Hello World», и все работает, за исключением того, что я добавил значки публикации/отмены публикации на панель инструментов и в сам список (маленькие зеленые/красные кружки).

Значки панели инструментов работают, и они могут без проблем изменить состояние, но маленькие значки не работают, вот код, который у меня есть:

view.html.php:

 protected function addToolBar() 
  {
    JToolBarHelper::title(JText::_('COM_MADS_MANAGER_OBJECTS'));
    JToolBarHelper::publishList($task = 'objects.publish', $alt = 'Publish');
    JToolBarHelper::unpublishList($task = 'objects.unpublish', $alt = 'Unpublish');
    JToolBarHelper::deleteListX('', 'objects.delete');
    JToolBarHelper::editListX('object.edit');
    JToolBarHelper::addNewX('object.add');
  }

tmpl > тело:

<?php
// No direct access to this file
defined('_JEXEC') or die;
?>
<?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><a href="<?php echo JRoute::_('index.php?option=com_mads&task=object.edit&id=' . $item->id); ?>"><?php echo $item->title; ?></a></td>
  <td><?php echo $item->description; ?></td>  
  <td align="center"><?php $published = JHTML::_('grid.published', $item, $i); echo $published;?></td>
  </tr>
<?php endforeach; ?>

Я использую встроенную функцию публикации/отмены публикации и не создавал свою собственную.

Таблицы:

<?php
// No direct access to this file
defined('_JEXEC') or die;

jimport('joomla.database.table');

class MAdsTableObjects extends JTable
{
    var $id = null;
    var $title = null;
    var $description = null;
    var $published = 0;


  function __construct(&$db) 
  {
    parent::__construct('#__mads_objects', 'id', $db);
  }
}
?>

person Mankind1023    schedule 19.08.2012    source источник
comment
как выглядит структура вашей таблицы?   -  person Valentin Despa    schedule 20.08.2012


Ответы (2)


Я понял это после МНОГО ФРЕКИНСКОЙ ГОЛОВНОЙ БОЛИ и потраченного впустую времени, это должно быть:

<?php echo JHtml::_('jgrid.published', $item->published, $i, 'objects.',true); ?>

где objects. — это имя моего представления/контроллера/модели для листинга.

person Mankind1023    schedule 23.08.2012
comment
я исправил это, добавив метод публикации в таблицу компонентов (administrator/components/com_blog/tables/BlogTableBlog.php). Вы также можете использовать метод из компонента веб-ссылок. - person R T; 24.04.2015

Я думаю, у вас должно быть поле состояния в БД, чтобы хранить статус

state   tinyint(3)

Чем попробовать использовать:

 echo JHtml::_('grid.sort',  'JSTATUS', 'a.state', $listDirn, $listOrder);
person Valentin Despa    schedule 20.08.2012
comment
В БД уже есть опубликованное поле, 1 = включено 0 = выключено, так работает панель инструментов. Проблема в том, что кнопок нет. К вашему сведению, это был не я с -1. - person Mankind1023; 21.08.2012
comment
попробуй сменить имя на state. - person Valentin Despa; 21.08.2012