Справочник по Joomla Form Field классам библиотеки WT AmoCRM: Accountinfo, Contactinfo, Webhookslist, списки тегов и кастомных полей, Leadspipelineslist и Entitymodalselect для XML-форм расширений Joomla.
WT AmoCRM library — Joomla Form Fields
Документация по классам Webtolk\Amocrm\Fields из библиотеки WT AmoCRM для Joomla. Поля предназначены для XML-форм Joomla и помогают выводить данные аккаунта AmoCRM, выбирать теги, пользовательские поля, воронки и сущности AmoCRM.
Общие правила
Все поля используют стандартный механизм Joomla Form XML:
<field
name="example"
type="Leadstagslist"
label="Тег сделки"
/>
Стандартные атрибуты Joomla (name, type, label, description, default, hint, multiple, showon, class, required и другие) обрабатываются ядром Joomla и здесь подробно не описываются. Ниже перечислены только кастомные XML-атрибуты, которые явно читаются классами WT AmoCRM из $this->element.
Для работы полей требуется настроенный системный плагин WT AmoCRM, корректные параметры подключения к AmoCRM и доступность AmoCRM API. При ошибках API часть полей показывает сообщение Joomla или рендерит блок ошибки.
Краткая матрица полей и атрибутов
XML type |
Класс | Назначение | Кастомные атрибуты |
|---|---|---|---|
Accountinfo |
AccountinfoField |
Информационный блок аккаунта AmoCRM и текущего пользователя интеграции | нет |
Contactinfo |
ContactinfoField |
Информационный блок контакта AmoCRM, связанного с пользователем Joomla | joomlauserid, joomlauseridsource, showtags, with |
Webhookslist |
WebhookslistField |
Информационный список webhooks AmoCRM | onlycurrentsite |
Leadstagslist |
LeadstagslistField |
Select-список тегов сделок | limit |
Contactstagslist |
ContactstagslistField |
Select-список тегов контактов | limit |
Сompaniestagslist |
CompaniestagslistField |
Select-список тегов компаний | limit |
Leadcustomfieldslist |
LeadcustomfieldslistField |
Select-список пользовательских полей сделок | нет |
Contactcustomfieldslist |
ContactcustomfieldslistField |
Select-список пользовательских полей контактов | hidenone |
Companycustomfieldslist |
CompanycustomfieldslistField |
Select-список пользовательских полей компаний | нет |
Leadspipelineslist |
LeadspipelineslistField |
Select-список воронок сделок | нет |
Entitymodalselect |
EntitymodalselectField |
Modal select для выбора контакта или сделки AmoCRM | entity |
Важно: в текущем коде
CompaniestagslistFieldобъявляет$type = 'Сompaniestagslist', где первая буква выглядит как кириллическаяС, а не латинскаяC. До отдельного исправления кода копируйте XMLtypeиз актуальной документации или исходного кода, чтобы не получить нераспознанный тип поля.
Accountinfo
Назначение
Accountinfo выводит информационный блок об аккаунте AmoCRM и текущем пользователе AmoCRM, от имени которого работает интеграция. Поле полезно в настройках компонента или плагина, где нужно показать администратору, что подключение к AmoCRM работает и к какому аккаунту оно относится.
Класс и layout
- Класс:
Webtolk\Amocrm\Fields\AccountinfoField - Базовый класс Joomla:
Joomla\CMS\Form\FormField - XML
type:Accountinfo - Layout:
libraries.webtolk.amocrm.fields.accountinfo - Поле не сохраняет значение.
getInput()возвращает пробел, а основной HTML рендерится через label/layout.
Кастомные XML-атрибуты
Нет. Класс не читает дополнительные XML-атрибуты из $this->element.
Логика работы
- Создаёт экземпляр
Webtolk\Amocrm\Amocrm. - Вызывает
$amocrm->account()->getAccountInfo(). - Если ответ содержит
error_code, layout получает флаг ошибки и объект ошибки. - Если аккаунт получен успешно, поле дополнительно запрашивает пользователя AmoCRM по
current_user_idчерез$amocrm->users()->getUserById(...). - Layout показывает название аккаунта, даты создания/изменения, имя, email и признак администратора текущего пользователя AmoCRM.
Пример XML
<field
name="amocrm_account_info"
type="Accountinfo"
label="AmoCRM account"
/>
Когда использовать
Используйте поле в административной форме настроек, чтобы визуально подтвердить подключение к AmoCRM. Поле не подходит для хранения значения, фильтра или выбора.
Contactinfo
Назначение
Contactinfo показывает ссылку и краткую информацию о контакте AmoCRM, который связан с пользователем Joomla через таблицу синхронизации WT AmoCRM. Поле не является select-списком и не сохраняет значение; оно выводит информационный блок.
Класс и layout
- Класс:
Webtolk\Amocrm\Fields\ContactinfoField - Базовый класс Joomla:
Joomla\CMS\Form\FormField - XML
type:Contactinfo - Layout:
libraries.webtolk.amocrm.fields.contactinfo - Маппинг Joomla user ID -> AmoCRM contact ID проверяется через
Webtolk\Amocrm\Helper\UserHelper::checkIsAmoCRMUser().
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
joomlauserid |
integer | нет | Явный ID пользователя Joomla. Имеет приоритет над joomlauseridsource. |
joomlauseridsource |
string | пустая строка | Имя переменной request input, из которой поле берёт Joomla user ID через Factory::getApplication()->getInput()->getInt(...). Используется только если joomlauserid не задан. |
showtags |
string boolean | false |
Если значение строго равно true, layout показывает теги контакта, если они пришли в ответе AmoCRM. |
with |
string | пустая строка | Передаётся вторым аргументом в contacts()->getContactById($contact_id, $with) как AmoCRM API with parameter. Например, tags нужен для вывода тегов. |
Логика выбора пользователя Joomla
- Если указан
joomlauserid, поле приводит его к integer и использует как ID пользователя Joomla. - Если
joomlauseridотсутствует и указанjoomlauseridsource, поле читает integer из текущего input по этому имени. - Если ID пользователя не найден, поле показывает предупреждение
LIB_WTAMOCRM_FIELD_AMOCRMCONTACTINFO_NO_JOOMLA_USER_ID. - Если пользователь Joomla найден, но связи с AmoCRM-контактом нет, поле показывает сообщение
LIB_WTAMOCRM_FIELD_AMOCRMCONTACTINFO_NO_AMOCRM_CONTACT_ID. - Если контакт найден, поле запрашивает AmoCRM contact by ID и выводит ссылку на контакт в AmoCRM.
- Если
showtags="true"и в ответе есть_embedded->tags, layout показывает теги как badges.
Пример: ID пользователя из URL/request
Подходит для формы пользователя, где ID доступен в input как id.
<field
name="amocrm_contact_info"
type="Contactinfo"
label="Контакт AmoCRM"
joomlauseridsource="id"
with="tags"
showtags="true"
/>
Пример: фиксированный ID пользователя
<field
name="amocrm_contact_info_for_user_42"
type="Contactinfo"
label="Контакт AmoCRM для пользователя #42"
joomlauserid="42"
with="tags"
showtags="true"
/>
Практические замечания
- Если нужно показывать теги, укажите одновременно
showtags="true"и подходящийwith, напримерwith="tags", чтобы AmoCRM вернула теги в_embedded. joomlauseridудобен для статического вывода конкретного пользователя, аjoomlauseridsource— для edit forms, где ID берётся из request.- Поле выводит информацию, а не значение для сохранения.
Webhookslist
Назначение
Webhookslist выводит информационный список webhooks, зарегистрированных в AmoCRM. В layout отображаются URL webhook, статус, даты создания/изменения и события AmoCRM.
Класс и layout
- Класс:
Webtolk\Amocrm\Fields\WebhookslistField - Базовый класс Joomla:
Joomla\CMS\Form\FormField - XML
type:Webhookslist - Layout:
libraries.webtolk.amocrm.fields.webhookslist
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
onlycurrentsite |
string boolean | false |
Если значение строго равно true, поле строит текущий Joomla webhook URL через webhooks()->getJoomlaWebhookUrl() и передаёт его в фильтр AmoCRM filter[destination]. |
Логика работы
- Создаёт объект webhooks API через
(new Amocrm())->webhooks(). - Проверяет
onlycurrentsite. - Если
onlycurrentsite="true"и текущий webhook URL доступен, вызываетgetWebhooks()с фильтром по destination. - Если фильтр не включён, вызывает
getWebhooks([])и получает общий список webhooks. - Layout показывает total count, режим отображения и список webhook-записей.
Пример: показать все webhooks
<field
name="amocrm_webhooks_all"
type="Webhookslist"
label="Все webhooks AmoCRM"
/>
Пример: показать webhooks только текущего сайта
<field
name="amocrm_webhooks_current_site"
type="Webhookslist"
label="Webhooks текущего сайта"
onlycurrentsite="true"
/>
Практические замечания
- Значение
onlycurrentsiteпроверяется как строкаtrue; значения1,yes,onне считаются включением фильтра. - Поле информационное и не сохраняет выбранное значение.
Leadstagslist
Назначение
Leadstagslist выводит select-список тегов сделок AmoCRM. Значением option является ID тега, текстом option — имя тега и ID.
Класс
- Класс:
Webtolk\Amocrm\Fields\LeadstagslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Leadstagslist - AmoCRM endpoint wrapper:
$amocrm->tags()->getTags('leads', $request_options)
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
limit |
integer/string | не передаётся | Если задан и не пустой, передаётся в AmoCRM request options. Значения больше 250 принудительно заменяются на 250. |
Пример
<field
name="lead_tag_id"
type="Leadstagslist"
label="Тег сделки"
limit="100"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле возвращает option с текстом
there is no tags in Amo CRM. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error, а options остаются пустыми.
Contactstagslist
Назначение
Contactstagslist выводит select-список тегов контактов AmoCRM. Значением option является ID тега.
Класс
- Класс:
Webtolk\Amocrm\Fields\ContactstagslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Contactstagslist - AmoCRM endpoint wrapper:
$amocrm->tags()->getTags('contacts', $request_options)
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
limit |
integer/string | не передаётся | Если задан и не пустой, передаётся в AmoCRM request options. Значения больше 250 принудительно заменяются на 250. |
Пример
<field
name="contact_tag_id"
type="Contactstagslist"
label="Тег контакта"
limit="200"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле возвращает option с текстом
there is no tags in Amo CRM. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error.
Сompaniestagslist
Назначение
Сompaniestagslist выводит select-список тегов компаний AmoCRM. Значением option является ID тега компании.
Класс
- Класс:
Webtolk\Amocrm\Fields\CompaniestagslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Сompaniestagslistв текущем коде - AmoCRM endpoint wrapper:
$amocrm->tags()->getTags('companies', $request_options)
Важное предупреждение о XML type
В исходном коде поле объявлено как:
protected $type = 'Сompaniestagslist';
Первая буква в строке выглядит как кириллическая С, а не латинская C. Визуально эти символы почти одинаковы, но для Joomla это разные строки. До исправления кода используйте точный type из актуального исходника/документации и проверяйте поле в форме.
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
limit |
integer/string | не передаётся | Если задан и не пустой, передаётся в AmoCRM request options. Значения больше 250 принудительно заменяются на 250. |
Пример
<field
name="company_tag_id"
type="Сompaniestagslist"
label="Тег компании"
limit="100"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле возвращает option с текстом
there is no tags in Amo CRM. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error.
Leadcustomfieldslist
Назначение
Leadcustomfieldslist выводит select-список пользовательских полей сделок AmoCRM. Значением option является ID пользовательского поля, текстом option — имя поля и его тип.
Класс
- Класс:
Webtolk\Amocrm\Fields\LeadcustomfieldslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Leadcustomfieldslist - AmoCRM endpoint wrapper:
$amocrm->customfields()->getLeadsCustomFields()
Кастомные XML-атрибуты
Нет. Класс не читает дополнительные XML-атрибуты из $this->element.
Пример
<field
name="lead_custom_field_id"
type="Leadcustomfieldslist"
label="Пользовательское поле сделки"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле возвращает option
there is no custom_fields in Amo CRM. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error.
Contactcustomfieldslist
Назначение
Contactcustomfieldslist выводит select-список пользовательских полей контактов AmoCRM. Дополнительно поле может показывать или скрывать служебную опцию «Не использовать».
Класс
- Класс:
Webtolk\Amocrm\Fields\ContactcustomfieldslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Contactcustomfieldslist - AmoCRM endpoint wrapper:
$amocrm->customfields()->getContactsCustomFields()
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
hidenone |
string boolean | false |
Если значение строго равно true, поле не добавляет option -1 с текстом JOPTION_DO_NOT_USE. Если атрибут отсутствует или имеет другое значение, option «Не использовать» добавляется первой. |
Пример: показать option «Не использовать»
<field
name="contact_custom_field_id"
type="Contactcustomfieldslist"
label="Пользовательское поле контакта"
/>
Пример: скрыть option «Не использовать»
<field
name="contact_custom_field_id"
type="Contactcustomfieldslist"
label="Пользовательское поле контакта"
hidenone="true"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле возвращает option
there is no custom_fields in Amo CRM for contacts. - Если
hidenoneне включён, option-1добавляется до пользовательских полей. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error.
Companycustomfieldslist
Назначение
Companycustomfieldslist выводит select-список пользовательских полей компаний AmoCRM. Значением option является ID пользовательского поля.
Класс
- Класс:
Webtolk\Amocrm\Fields\CompanycustomfieldslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Companycustomfieldslist - AmoCRM endpoint wrapper:
$amocrm->customfields()->getCompaniesCustomFields()
Кастомные XML-атрибуты
Нет. Класс не читает дополнительные XML-атрибуты из $this->element.
Пример
<field
name="company_custom_field_id"
type="Companycustomfieldslist"
label="Пользовательское поле компании"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле возвращает option
there is no custom_fields in Amo CRM for companies. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error.
Leadspipelineslist
Назначение
Leadspipelineslist выводит select-список воронок сделок AmoCRM. Значением option является ID воронки, текстом option — название воронки и ID.
Класс
- Класс:
Webtolk\Amocrm\Fields\LeadspipelineslistField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ListField - XML
type:Leadspipelineslist - AmoCRM endpoint wrapper:
$amocrm->leads()->getLeadsPiplines()
Кастомные XML-атрибуты
Нет. Класс не читает дополнительные XML-атрибуты из $this->element.
Пример
<field
name="pipeline_id"
type="Leadspipelineslist"
label="Воронка AmoCRM"
/>
Логика ошибок и пустых данных
- Если ответ AmoCRM пустой, поле добавляет option с текстом
there is no tags in Amo CRM. - Если AmoCRM вернула
error_code, сообщение добавляется в очередь Joomla как error.
Entitymodalselect
Назначение
Entitymodalselect наследует Joomla ModalSelectField и открывает модальное окно выбора сущности AmoCRM через com_ajax системного плагина wt_amocrm. Поле сохраняет ID выбранной сущности.
Класс и layout
- Класс:
Webtolk\Amocrm\Fields\EntitymodalselectField - Базовый класс Joomla:
Joomla\CMS\Form\Field\ModalSelectField - XML
type:Entitymodalselect - Modal URL:
index.php?option=com_ajax&plugin=wt_amocrm&group=system&format=html&tmpl=component&action=modalselect&entity=...&action_type=internal - Modal layout:
lib_webtolk_amocrm/layouts/fields/entitymodalselect.php
Кастомные XML-атрибуты
| Атрибут | Тип | По умолчанию | Логика |
|---|---|---|---|
entity |
string | contacts |
Определяет, какие сущности выбирать в modal select. Значение попадает в AJAX URL и используется в заголовке modal. В getValueTitle() явно обработаны leads и contacts; все остальные значения при показе выбранного значения фактически падают в default-ветку контактов. |
Поддерживаемые значения entity
| Значение | Что выбирает | Как показывается выбранное значение |
|---|---|---|
contacts |
Контакты AmoCRM | contacts()->getContactById($value) |
leads |
Сделки AmoCRM | leads()->getLeadById($value) |
Комментарий в коде упоминает tags, но getValueTitle() не содержит отдельной ветки для тегов. Для публичной документации используйте contacts и leads.
Пример: выбор контакта
<field
name="amocrm_contact_id"
type="Entitymodalselect"
label="Контакт AmoCRM"
entity="contacts"
/>
Пример: выбор сделки
<field
name="amocrm_lead_id"
type="Entitymodalselect"
label="Сделка AmoCRM"
entity="leads"
/>
Логика работы
setup()читаетentity; если атрибут пустой, используетсяcontacts.- Поле строит URL для modal select через
com_ajaxи добавляет Joomla form token. - Заголовок modal берётся из языковой константы
LIB_WTAMOCRM_FIELD_ENTITY_MODAL_SELECT_CHOOSE_{ENTITY}. - Если у поля нет
hint, hint устанавливается равным заголовку modal. - При отображении уже сохранённого значения
getValueTitle()приводит value к integer ID и запрашивает название сущности в AmoCRM. - Если ID пустой, поле показывает пустое значение.
Практические замечания
- Значение поля — ID выбранной сущности AmoCRM.
- Для контактов и сделок используйте отдельные поля с разными
name. - Не используйте
entity="tags"в публичных примерах, пока код не получит отдельную поддержку отображения выбранного тега.
Полный пример XML
<form>
<fieldset name="amocrm">
<field
name="amocrm_account_info"
type="Accountinfo"
label="AmoCRM account"
/>
<field
name="amocrm_contact_info"
type="Contactinfo"
label="Контакт AmoCRM текущего пользователя"
joomlauseridsource="id"
with="tags"
showtags="true"
/>
<field
name="amocrm_webhooks"
type="Webhookslist"
label="Webhooks текущего сайта"
onlycurrentsite="true"
/>
<field
name="lead_tag_id"
type="Leadstagslist"
label="Тег сделки"
limit="100"
/>
<field
name="contact_custom_field_id"
type="Contactcustomfieldslist"
label="Пользовательское поле контакта"
hidenone="true"
/>
<field
name="pipeline_id"
type="Leadspipelineslist"
label="Воронка AmoCRM"
/>
<field
name="amocrm_lead_id"
type="Entitymodalselect"
label="Сделка AmoCRM"
entity="leads"
/>
</fieldset>
</form>
Что проверять при внедрении
- Подключение WT AmoCRM к аккаунту AmoCRM работает без ошибок.
- Системный плагин
wt_amocrmвключён, если используетсяEntitymodalselect. - Для
Contactinfoсуществует связь Joomla user ID -> AmoCRM contact ID. - Для списков тегов, пользовательских полей и воронок в AmoCRM есть соответствующие данные.
- Для
Webhookslist onlycurrentsite="true"в настройках интеграции доступен корректный webhook token, чтобы библиотека могла построить URL текущего сайта.