-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
1

Ошибка при создании собственного комплексного компонента битрикс

29.06.2022, 18:02. Показов 1712. Ответов 14

Author24 — интернет-сервис помощи студентам
Создал комплексный компонент выводящий элементы инфоблока, при размещении компонента выскакивает ошибка "superfinal.complex" is not a component, компонент написан на классе,структура соблюдена,подключал так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?$APPLICATION->IncludeComponent(
    "superfinal.complex",
    "superfinal.list",
    array(
        'ID' => $arElement['ID'],
        'NAME' => $arElement['NAME'],
        'DETAIL_PICTURE' => $img['src'],
        'DETAIL_PAGE_URL' => $arElement['DETAIL_PAGE_URL'],
        'PREVIEW_TEXT' => $arElement['PREVIEW_TEXT'],
    ),
    false);
?>
Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2022, 18:02
Ответы с готовыми решениями:

Глюк при создании собственного компонента
Создал свой компонент, в нем создал поле типа TEdit, далее при работе с этим компонентом в...

Ошибка при создании компонента TIBTransaction
Сегодя весь день сражаюсь с ibx, lazarus, ibexpert. После того, как наконец удалось установить ibx,...

Ошибка при создании дочернего компонента
Пытаюсь отрисовать прямоугольник на канве унаследованной от TImage. //...

Создание собственного компонента. Ошибка
Добрый день, почему при написании собственного компонента Делфи не может определить процедуру...

Создание собственного компонента: Ошибка Unresolved external
Всем привет. Есть задание: Построить класс - потомок класса TStringGrid, у объектов которого при...

14
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
30.06.2022, 08:49 2
Традиционный вам вопрос:
покажите структура файлов вашего компонента от корня сайта.

На первый взгляд вы так и не поняли то, что я вам расписал в прошлый раз про наименование
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
30.06.2022, 14:29  [ТС] 3
upd перечитал ещё раз переместив компонент в папку custom, теперь вывод выглядит вот так
PHP
1
2
3
4
5
<?$APPLICATION->IncludeComponent(
    "custom:complex",
    ".default",
    false);
?>
путь от корня сайта local/components/custom/ тут распологаются 3 папки complex(комплексный компонент) list(отвечает за полное отображение) test(вывод всех элементов)
0
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
30.06.2022, 14:36 4
1. обычно все же третий параметр это массив параметров компонента. Там точно нужен false?
2. Каков результат?
3. Т.е у вас local/components/custom/complex/class.php ?
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
30.06.2022, 14:48  [ТС] 5
1) изменил на
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?$APPLICATION->IncludeComponent(
    "custom:complex",
    ".default",
    array(
        'ID' => $arElement['ID'],
        'NAME' => $arElement['NAME'],
        'DETAIL_PICTURE' => $img['src'],
        'DETAIL_PAGE_URL' => $arElement['DETAIL_PAGE_URL'],
        'PREVIEW_TEXT' => $arElement['PREVIEW_TEXT'],
    ),
    false);
?>
2) результат всё тот же 'custom:complex' is not a component
3)local/components/custom/complex/class.php И ещё templates/,default/ и в нём 2 файла лист и тест
0
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
30.06.2022, 15:07 6
покажите первую строку класса "class ..... " как она выглядит?
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
30.06.2022, 15:42  [ТС] 7
если мы говорим о комплексном то вот
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
declare(strict_types=1);
 
 
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    exit();
}
 
class superfinal extends CBitrixComponent
{
    /**
     * {@inheritDoc}
     */
    public function executeComponent(): void
    {
        $arDefaultUrlTemplates404 = [
            'list' => '',
            'test' => '/#ELEMENT_CODE#/',
        ];
......
Добавлено через 33 минуты
upd:
namespace component/custom добавил, ситуация не изменилась
0
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
30.06.2022, 17:31 8
Пожалуй лучше приложите архивом весь компонент.... Так не вижу проблем.
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
30.06.2022, 17:41  [ТС] 9
вот архив
Вложения
Тип файла: zip custom.zip (29.9 Кб, 16 просмотров)
0
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
30.06.2022, 18:43 10
local/components/custom/complex/class.php
файл class совсем не так лежит
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
30.06.2022, 19:03  [ТС] 11
Спасибо большое,и с этим я ломал голову около недели)))
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
01.07.2022, 11:28  [ТС] 12
появилась новая ошибка. Cannot find '.default' template with page '' хотя я .default указывал как темплейт,где стоит копать?
0
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
01.07.2022, 11:43 13
1. ".default" можно и не указывать, можно передать пустую строку - это и будет означать .default
2. $componentPage - у вас присваивается? в вашем случае оно должно быть либо list либо test
0
-1 / 1 / 0
Регистрация: 24.02.2020
Сообщений: 175
01.07.2022, 15:52  [ТС] 14
не совсем понял,разве я его не присвоил?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
  $componentPage = CComponentEngine::parseComponentPath($this->arParams['SEF_FOLDER'], $arUrlTemplates, $arVariables);
 
        CComponentEngine::initComponentVariables($componentPage, $arComponentVariables, $arVariableAliases, $arVariables);
 
        $this->arResult = [
            'ID' => $arElement['ID'],
            'NAME' => $arElement['NAME'],
            'DETAIL_PICTURE' => $img['src'],
            'DETAIL_PAGE_URL' => $arElement['DETAIL_PAGE_URL'],
            'PREVIEW_TEXT' => $arElement['PREVIEW_TEXT'],
        ];
        $this->includeComponentTemplate($componentPage);
    }
...
Добавлено через 4 часа 2 минуты
В каком файле вообще стоит копать?
0
2698 / 1290 / 252
Регистрация: 16.03.2008
Сообщений: 6,015
Записей в блоге: 2
01.07.2022, 17:09 15
тут уже отладка, то .что вы вызвали метод не означает, что он отработал как надо. Так, например, в приведенных выше подключениях вы не передаете параметр SEF_FOLDER компоненте, а при вызове метода передаете его значение (по сути null). Т.е. чтоб метод работал правильно ему нужно еще параметры собрать нужные
0
01.07.2022, 17:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2022, 17:09
Помогаю со студенческими работами здесь

Подсказки при создании экземпляра собственного класса
Все мы сталкиваемся с тем что при создании экземпляров классов и обращении к методам .NET сборок...

Joomla 3. при создании пунта меню и при установке компонента появляются ошибки
При создании пункта меню появляется: Предупреждение: Сохранить не удалось из-за ошибки:...

Проблемы при ручном создании компонента
Делаю свой компонент-кнопку. Просто как компонент создается на ура, НО как только пытаюсь изменить...

Глюк при создании компонента динамически
При формировании таблицы в двах столбцах (m и h) динамически создаются компоненты edit. Но после...

Заполнение ComboBox при создании компонента
Первый раз пишу компонент, не могу разобраться. Основа TChart, в него вклеиваю TComboBox. Создаю...

Ошибка при создании дескриптора окна при динамическом создании кнопок
public Form1() { InitializeComponent(); } int height = 10;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru