Новости Joomla

Вышли релизы безопасности Joomla 5.3.4 и Joomla 4.4.14

Релиз безопасности Joomla 5.3.4

Проект Joomla спешит сообщить о выпуске Joomla 5.3.4 и Joomla 4.4.14. Это релиз безопасности для серии Joomla 5.3 и релиз безопасности для серии Joomla 4.4.

0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 2293 Просмотров
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Учусь делать компоненты.

https://mb4.ru/cms/joomla4/724-developing-a-basic-component-for-joomla-4.html

schooltechcontent.xml
Код
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" method="upgrade">
<!-- атрибут 'version' для тега расширения больше не используется -->
 
    <name>SchoolTechContent</name>
    <!-- Следующие элементы являются необязательными и не содержат ограничений на форматирование -->
    <creationDate>Janiary 2022</creationDate>
    <!-- Фиктивный автор, не стесняйтесь заменять его в любом месте, где вы его видите -->
    <author></author>
    <authorUrl></authorUrl>
    <copyright></copyright>
    <license></license>
    <!-- Строка 'version' записывается в таблицу компонентов -->
    <version>0.0.1</version>
    <!-- Описание является необязательным и по умолчанию используется имя сомпонента -->
    <description>
        Schootech content
    </description>
 
    <!-- Это пространство имен PHP, в котором организован
    код расширения. Он должен следовать этому формату:
   
    Vendor\Component\ComponentName
 
    "Vendor" может быть названией компании или вашим собственным именем
   
    Раздел "ComponentName" ДОЛЖЕН соответствовать имени, используемому
    везде для вашего компонента. Каким бы ни было имя этого XML-файла,
    пространство имен должно совпадать (заглавные/прописные буквы не учитываются).
    -->
    <namespace path="src/">MuCompani\Component\schooltechcontent</namespace>
           
    <administration>
        <!-- Ссылка, которая появится в меню админки Joomla "Components" -->
        <menu link="index.php?option=com_schooltechcontent">SchoolTech</menu>
        <!-- Список файлов и папок для копирования.
             Обратите внимание на атрибут "folder".
             Это имя папки в пакете компонентов для копирования в CMS Joomla 4. -->
        <files folder="admin/">
            <folder>services</folder>
            <folder>src</folder>
            <folder>tmpl</folder>
        </files>
    </administration>
 
</extension>

admin/services/provider.php
Код
<?php

defined('_JEXEC') or die;

use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
use Joomla\CMS\Extension\ComponentInterface;
use Joomla\CMS\Extension\MVCComponent;
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;

return new class implements ServiceProviderInterface {

    public function register(Container $container): void {
        $container->registerServiceProvider(new MVCFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->registerServiceProvider(new ComponentDispatcherFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->set(
            ComponentInterface::class,
            function (Container $container) {
                $component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
                $component->setMVCFactory($container->get(MVCFactoryInterface::class));

                return $component;
            }
        );
    }
};

admin/src/Controller/DisplayController.php
Код
<?php

namespace MuCompani\Component\schooltechcontent\Administrator\Controller;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\Controller\BaseController;


/**
 * Контроллер по умолчанию компонента SchoolTechContent
 *
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 */
class DisplayController extends BaseController {
    /**
     * Представление по умолчанию для метода отображения.
     *
     * @var string
     */
    protected $default_view = 'schoolcontent';

    public function display($cachable = false, $urlparams = array()) {
        return parent::display($cachable, $urlparams);
    }

}

admin/src/View/SchoolContent/HtmlView.php
Код
<?php

namespace MuCompani\Component\schooltechcontent\Administrator\Controller;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\Controller\BaseController;


/**
 * Контроллер по умолчанию компонента SchoolTechContent
 *
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 */
class DisplayController extends BaseController {
    /**
     * Представление по умолчанию для метода отображения.
     *
     * @var string
     */
    protected $default_view = 'schoolcontent';

    public function display($cachable = false, $urlparams = array()) {
        return parent::display($cachable, $urlparams);
    }

}

admin/tmpl/schoolcontent/default.php
Код
<?php

namespace MuCompani\Component\schooltechcontent\Administrator\View\SchoolContent;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;

/**
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 *
 * [member=126442]copyright[/member]   Copyright (C) 2021 John Smith. All rights reserved.
 * @license     GNU General Public License version 3; see LICENSE
 */

/**
 * Основной вид в админке "SchoolTechContent"
 */
class HtmlView extends BaseHtmlView {

    /**
     * Отображение основного вида "SchoolTechContent"
     *
     * @param   string  $tpl  Имя файла шаблона для анализа; автоматический поиск путей к шаблону.
     * @return  void
     */
    function display($tpl = null) {
        parent::display($tpl);
    }


}

Собираю все это в архив com_schooltechcontent.zip и устанавливаю. В итоге, в меню компонента выводится

Некорректный класс контроллера: display

При копипасте из примера все работает нормально.

Где я ошибся (подозреваю, что где-то в admin/src/View/SchoolContent/HtmlView.php)?



*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
Re: Ошибка при создании компонента
« Ответ #1 : 28.01.2022, 15:34:22 »
admin/src/View/SchoolContent/HtmlView.php

Код
namespace MuCompani\Component\schooltechcontent\Administrator\View\SchoolContent;

admin/tmpl/schoolcontent/default.php

Вообще убрать все и выводить только верстку,  к примеру
Код
	<h2>Hello world!</h2>
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Re: Ошибка при создании компонента
« Ответ #2 : 31.01.2022, 07:53:24 »
admin/src/View/SchoolContent/HtmlView.php

И чем это отличается от того, что я написал ? Или это в смысле, что с ним что-то не так ? А что именно ?

Я пробовал в этом файле только эту строчку и оставить, но от опять выводит неверный класс display
« Последнее редактирование: 31.01.2022, 08:24:18 от leha111 »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Ошибка при создании компонента
« Ответ #3 : 31.01.2022, 10:32:04 »
admin/src/View/SchoolContent/HtmlView.php

И чем это отличается от того, что я написал ? Или это в смысле, что с ним что-то не так ? А что именно ?

Я пробовал в этом файле только эту строчку и оставить, но от опять выводит неверный класс display
admin/tmpl/schoolcontent/default.php

Здесь только вёрстку оставить, это же макет по сути. Там не должно быть классов.
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Re: Ошибка при создании компонента
« Ответ #4 : 31.01.2022, 12:13:55 »
Косяк ! То, что записано, как admin/tmpl/schoolcontent/default.php - это, на самом деле, admin/src/View/SchoolContent/HtmlView.php. А реально это файл выгляди так.

Код
<?php

/**
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 *
 * [member=126442]copyright[/member]
 * @license
 */

// Нет прямого доступа к этому файлу
defined('_JEXEC') or die('Всем кыш! =D');
?>
<h2>ТЕСТ</h2>




 
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Re: Ошибка при создании компонента
« Ответ #5 : 31.01.2022, 13:09:03 »
Попробовал немного переделать

schooltechcontent.xml

Код
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" method="upgrade">
<!-- атрибут 'version' для тега расширения больше не используется -->
 
    <name>SchoolTechContent</name>
    <!-- Следующие элементы являются необязательными и не содержат ограничений на форматирование -->
    <creationDate></creationDate>
    <!-- Фиктивный автор, не стесняйтесь заменять его в любом месте, где вы его видите -->
    <author>MuCompani</author>
    <authorUrl></authorUrl>
    <copyright></copyright>
    <license></license>
    <!-- Строка 'version' записывается в таблицу компонентов -->
    <version>0.1</version>
    <!-- Описание является необязательным и по умолчанию используется имя сомпонента -->
    <description>
        Контент для сайта SchoolTech
    </description>
 
    <!-- Это пространство имен PHP, в котором организован
    код расширения. Он должен следовать этому формату:
   
    Vendor\Component\ComponentName
 
    "Vendor" может быть названией компании или вашим собственным именем
   
    Раздел "ComponentName" ДОЛЖЕН соответствовать имени, используемому
    везде для вашего компонента. Каким бы ни было имя этого XML-файла,
    пространство имен должно совпадать (заглавные/прописные буквы не учитываются).
    -->
    <namespace path="src/">MuCompani\Component\SchoolTechContent</namespace>
           
    <administration>
        <!-- Ссылка, которая появится в меню админки Joomla "Components" -->
        <menu link="index.php?option=com_schooltechcontent">SchoolTechContent</menu>
        <!-- Список файлов и папок для копирования.
             Обратите внимание на атрибут "folder".
             Это имя папки в пакете компонентов для копирования в CMS Joomla 4. -->
        <files folder="admin/">
            <folder>services</folder>
            <folder>src</folder>
            <folder>tmpl</folder>
        </files>
    </administration>
 
</extension>

admin/services/provider.php
Код
<?php

defined('_JEXEC') or die;

use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
use Joomla\CMS\Extension\ComponentInterface;
use Joomla\CMS\Extension\MVCComponent;
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;

return new class implements ServiceProviderInterface {

    public function register(Container $container): void {
        $container->registerServiceProvider(new MVCFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->registerServiceProvider(new ComponentDispatcherFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->set(
            ComponentInterface::class,
            function (Container $container) {
                $component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
                $component->setMVCFactory($container->get(MVCFactoryInterface::class));

                return $component;
            }
        );
    }
};

admin/src/Controller/DisplayController.php

Код
<?php

namespace MuCompani\Component\SchoolTechContent\Administrator\Controller;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\Controller\BaseController;

/**
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 *
 * [member=126442]copyright[/member]   Copyright (C) 2021 John Smith. All rights reserved.
 * @license     GNU General Public License version 3; see LICENSE
 */

/**
 * Контроллер по умолчанию компонента SchoolTechContent
 *
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 */
class DisplayController extends BaseController {
    /**
     * Представление по умолчанию для метода отображения.
     *
     * @var string
     */
    protected $default_view = 'schooltemplate';

    public function display($cachable = false, $urlparams = array()) {
        return parent::display($cachable, $urlparams);
    }

}


admin/src/View/SchoolContent/HtmlView.php

Код
<?php

namespace MuCompani\Component\SchoolTechContent\Administrator\View\SchoolContent;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;

/**
 * @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
 */

/**
 * Основной вид в админке "SchoolTechContnent"
 */
class HtmlView extends BaseHtmlView {

    /**
     * Отображение основного вида "SchoolTechContnent"
     *
     * @param   string  $tpl  Имя файла шаблона для анализа; автоматический поиск путей к шаблону.
     * @return  void
     */
    function display($tpl = null) {
        parent::display($tpl);
    }


}

admin/tmpl/schooltemplate/default.php
Код
<?php

/**
 * @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
 */

// Нет прямого доступа к этому файлу
defined('_JEXEC') or die('Всем кыш! =D');
?>
<h2>Hello world!</h2>

Теперь он пишет "404 Не удалось найти представление [name, type, prefix]: schooltemplate, HTML, Administrator.

"
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Ошибка при создании компонента
« Ответ #6 : 01.02.2022, 11:13:58 »
Зачем ты сюда это запостил?
https://github.com/joomla/joomla-cms/issues/36908

Это не проблема CMS, грузишь людей непонятно чем, ещё и ссылки там оставляешь на русскоязычый ресурс. Закрой там issue, пожалуйста.

Цитировать
Теперь он пишет "404 Не удалось найти представление [name, type, prefix]: schooltemplate, HTML, Administrator.
Тебе эта ошибка явно же пишет, что пытается открыть представление с именем schooltemplate. А у тебя какое? SchoolContent
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка err_cache_miss

Автор geral

Ответов: 3
Просмотров: 17600
Последний ответ 01.10.2025, 07:15:51
от geral
Ошибка http 500 Whoops, looks like somethin после включение Отладки в настройках

Автор androv77

Ответов: 3
Просмотров: 858
Последний ответ 03.04.2025, 17:55:01
от azm1n
Ошибка при установке Joomla 5 на Open Server 6.0

Автор Mnojitell

Ответов: 5
Просмотров: 1221
Последний ответ 03.04.2025, 11:36:11
от Akeksandr
Ошибка Отсутствует поле "itemReviewed

Автор Zegeberg

Ответов: 3
Просмотров: 1188
Последний ответ 24.10.2024, 12:38:24
от Zegeberg
Ошибка An error has occurred

Автор THE KILLERS

Ответов: 15
Просмотров: 5813
Последний ответ 13.10.2024, 11:03:44
от Mick_20