При создании компонента создается база данных. Надо достать данные из неё и, пока что, абы как вывести на странице в админке.
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" method="upgrade">
<!-- атрибут 'version' для тега расширения больше не используется -->
<name>School Tech</name>
<!-- Следующие элементы являются необязательными и не содержат ограничений на форматирование -->
<creationDate></creationDate>
<!-- Фиктивный автор, не стесняйтесь заменять его в любом месте, где вы его видите -->
<author>Mu Compani</author>
<authorUrl></authorUrl>
<copyright></copyright>
<license>0.0.1</license>
<!-- Строка 'version' записывается в таблицу компонентов -->
<version>0.0.8</version>
<!-- Описание является необязательным и по умолчанию используется имя сомпонента -->
<description>
Контент для сайта
</description>
<namespace path="src/">MuCompani\Component\SchoolTech</namespace>
<files folder="site/">
<folder>language</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
<languages>
<language tag="en-GB">site/language/en-GB/en-GB.com_schooltech.ini</language>
<language tag="ru-RU">site/language/ru-RU/ru-RU.com_schooltech.ini</language>
</languages>
<administration>
<!-- Ссылка, которая появится в меню админки Joomla "Components" -->
<menu>SchoolTech</menu>
<submenu>
<menu link="option=com_schooltech&view=trainingprograms">COM_SCHOOLTECH_TRAINING_PROGRAMS</menu>
</submenu>
<!-- Список файлов и папок для копирования.
Обратите внимание на атрибут "folder".
Это имя папки в пакете компонентов для копирования в CMS Joomla 4. -->
<files folder="admin/">
<folder>language</folder>
<folder>services</folder>
<folder>sql</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
<languages>
<language tag="en-GB">admin/language/en-GB/en-GB.com_schooltech.ini</language>
<language tag="en-GB">admin/language/en-GB/en-GB.com_schooltech.sys.ini</language>
<language tag="ru-RU">admin/language/ru-RU/ru-RU.com_schooltech.ini</language>
<language tag="ru-RU">admin/language/ru-RU/ru-RU.com_schooltech.sys.ini</language>
</languages>
</administration>
<install>
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update>
<schemas>
<schemapath type="mysql">sql/mysql</schemapath>
</schemas>
</update>
</extension>
sql/install.mysql.utf8.sql
CREATE TABLE `#__schooltech_training_programs` (
`id` SERIAL NOT NULL,
`name` VARCHAR(200) NOT NULL,
`published` BOOLEAN NOT NULL DEFAULT FALSE,
`description` MEDIUMTEXT,
`education_time` INT,
`document` MEDIUMTEXT,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
INSERT INTO `#__schooltech_training_programs` (`name`) VALUES
('TEST1'),
('TEST2');
src/View/Trainingprograms/HtmlView.php
namespace MuCompani\Component\SchoolTech\Administrator\View\Trainingprograms;
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Helper\ContentHelper;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\Toolbar;
use Joomla\CMS\Toolbar\ToolbarHelper;
/**
* @package Joomla.Administrator
* @subpackage com_helloworld
*
* [member=126442]copyright[/member] Copyright (C) 2021 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
/**
* Основной вид в админке "SchoolTech"
*/
class HtmlView extends BaseHtmlView {
//Массив значений для вывода учебных программ
protected $items;
/**
* Отображение основного вида "SchoolTech"
*
* @param string $tpl Имя файла шаблона для анализа; автоматический поиск путей к шаблону.
* @return void
*/
function display($tpl = null) {
$this->items= $this->get('Items');//Объекты для отображения
var_dump($this->items);
parent::display($tpl);
}
}
src/Model/TrainingprogramsModel.php
namespace MuCompani\Component\SchoolTech\Administrator\Model;
\defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Associations;
use Joomla\CMS\MVC\Model\ListModel;
use Joomla\CMS\Table\Table;
use Joomla\Database\ParameterType;
use Joomla\Utilities\ArrayHelper;
class ContactsModel extends ListModel
{
protected function getListQuery(){
//Создаем новый query объект
$db = $this->getDbo();
$query = $db->getQuery(true);
$user = Factory::getUser();
//Выберем необходимые поля из таблицы
$query->select(
$db->quoteName(
explode(
', ',
$this->getState(
'list.select',
'a.id, a.name, a.alias'
)
)
)
);
$query->from($db->quoteName('#__schooltech_training_programs', 'a'));
return $query;
}
}
tmpl/trainingprograms/default.php
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Associations;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
HTMLHelper::_('behavior.multiselect');
$user = Factory::getUser();//Информация о текущем пользователе
$userId = $user->get('id');
// Нет прямого доступа к этому файлу
defined('_JEXEC') or die('Всем кыш! =D');
?>
<h2>Здесь будут программы обучения</h2>
Выдает null. Что ещё надо сделать, чтобы компонент получил доступ к этим записям в БД ?