2017-01-19 19 views
1

У нас есть пользовательский Joomla! который мы разработали для отображения отчетов различных типов для наших клиентов. В интерфейсе администратора вы должны настроить службу и отчет в указанном компоненте. Затем мы добавляем настраиваемый модуль, специально предназначенный для каждого клиента, который указывает на отчет и загружает его в другую пустую страницу.Преобразование модуля Joomla для просмотра в существующем компоненте

Это прекрасно подходит для того, чтобы адаптировать и почти полностью перепроектировать каждый отчет на основе предпочтений клиента, но мы хотели бы иметь возможность использовать представление без модуля для любого стандартизованного. Я начал преобразовывать один конкретный отчет в его собственное представление и сразу же создал Сторону Администратора без проблем. Проблема, с которой я столкнулся, - это внешний дисплей.

Из того, что я собираюсь, внешний вид должен загружать view.html.php и metadata.xml прежде чем что-либо еще. Однако код на view.html.php, похоже, не выполняется (как проверено с заявлениями печати до и после каждой строки). Ниже приведена санированная версия файла и это XML. Для справки, мы запускаем Joomla! 3.6.5.

PHP:

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

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

class [ComponentName]ViewDashboard extends JViewLegacy 
{  

    public function display($tpl = null) 
    { 
     /*[Large code block here, removed for sanitization]*/ 
     parent::display($tpl); 
    } 

} 
?> 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<metadata> 
    <!-- View definition --> 
    <view title="Dashboard"> 
     <!-- Layout options --> 
     <options> 
      <!-- Default layout's name --> 
      <default name="Dashboard" /> 
     </options> 
    </view> 
</metadata> 

ответ

1

Ваше имя класса в файле зрения это неправильно. Это должно быть

class YOUR_COMPONENT_NAMEViewDashboard extends JViewLegacy 
{  

    public function display($tpl = null) 
    { 
     /*[Large code block here, removed for sanitization]*/ 
     parent::display($tpl); 
    } 

} 

Замените YOUR_COMPONENT_NAME на имя вашего компонента.

Проверить ссылку https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part

+0

На самом деле это файл. Я забыл снять этот бит во время публикации. Обновит оригинал, чтобы его отразить. – AmaliaKalio

1

Понял работает. Мне пришлось добавить модель к передней части для ее отображения, несмотря на то, что присутствует другая логика. Санированный файл выглядит следующим образом: root \ components \ com_ComponentName \ models \ modelName.php, где modelName соответствует представлению.

<?php 
// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 
ini_set('memory_limit','1024M'); 

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


class ComponentNameModelDashboard extends JModelItem 
{ 

    protected function populateState() 
    { 
     // Load the parameters. 
     //print_r(JFactory::getApplication()->getParams()); 
     $this->setState('params', JFactory::getApplication()->getParams()); 
     parent::populateState(); 
    } 

    public function getItem() 
    { 
     if (!isset($this->item)) 
     { 
      $params = clone $this->getState('params'); 
      $params->merge($this->item->params); 
      $this->item->params=$params; 
      $params = new JRegistry; 
      $params->loadString($this->item->params,'JSON'); 
      $report=$params['report']; 
      $db = JFactory::getDbo(); 
      $query = $db->getQuery(true); 
      $query->select('*') 
        ->from('#__DBTABLEHERE') 
        ->where('dashboard_name=\'' . (string)$report.'\''); 
      $db->setQuery((string)$query); 
     } 
     return $this->item; 
    } 
} 

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

  • Нет связанных вопросов^_^