К содержанию

Главное

Ошибки оформления и расширения

Эти ошибки относятся к тому, как собирается каркас страницы: меню, области макета, собственные секции оболочки, компоненты проекта в smart/, макеты и секции в design/ и рецепты композиции. Как это устроено, описано в разделах «Области макета» и «Композиция интерфейса».

Меню и макет

Код Причина и что сделать
DECLARATIVE_NAVIGATION_DEPTH_EXCEEDED Меню получилось глубже четырёх уровней. Что сделать: Перенесите страницы глубже четвёртого уровня выше или объедините разделы.
DECLARATIVE_CONTAINER_MAX_INVALID layout.container.max — не целое число от 1 до 8. Что сделать: Укажите число от 1 до 8; для большинства сайтов подходит 7.
DECLARATIVE_CONTENT_GAP_INVALID layout.content.gap — не целое число от 0 до 8. Что сделать: Укажите 0 для обычной статьи или число до 8 для лендинга.
DECLARATIVE_REQUIRED_REGION_DISABLED Отключена основная область main. Что сделать: Уберите layout.regions.main.enabled: false.
DECLARATIVE_LAYOUT_CONFIGURATION_INVALID layout.key называет незарегистрированный макет. Что сделать: Укажите docara.docs или макет проекта из design/layouts/.
DECLARATIVE_SHELL_BRANDING_INVALID Логотип для тёмной темы задан без основного логотипа, или выбран режим logo без файла логотипа. Что сделать: Укажите основной логотип в разделе brand.

Своя композиция области

Области layout.regions.<область>.sections собираются из секций и блоков.

Код Причина и что сделать
DECLARATIVE_REGION_UNKNOWN В layout.regions указана область, которой нет в макете. Что сделать: Используйте header, sidebar, main, outline или footer.
DECLARATIVE_REGION_CONFIGURATION_INVALID, DECLARATIVE_REGION_SECTION_INVALID, DECLARATIVE_REGION_BLOCK_INVALID, DECLARATIVE_REGION_ELEMENT_INVALID Описание области, секции или блока записано неверно: не объект, нет id или section, неизвестное поле. Что сделать: Сверьте запись с примером в разделе «Собственная композиция области».
DECLARATIVE_REGION_SECTION_LIMIT_EXCEEDED, DECLARATIVE_REGION_BLOCK_LIMIT_EXCEEDED В области больше 8 секций или в секции больше 12 блоков. Что сделать: Объедините или уберите лишние.
DECLARATIVE_SECTION_INSTANCE_ID_DUPLICATED, DECLARATIVE_BLOCK_INSTANCE_ID_DUPLICATED, DECLARATIVE_DOCUMENT_NODE_ID_DUPLICATED Два элемента получили одинаковый id. Что сделать: Дайте каждой секции и блоку свой id.
DECLARATIVE_DOCUMENT_REGION_MANAGED Область main заполняется самой страницей, её нельзя описать секциями. Что сделать: Уберите sections у main.
DECLARATIVE_SECTION_CAPABILITY_MISMATCH, DECLARATIVE_SECTION_REGION_FORBIDDEN Секция не подходит этой области. Что сделать: Поставьте её в область, для которой она предназначена, — это видно в docara atlas --json.
DECLARATIVE_BLOCK_SECTION_FORBIDDEN, DECLARATIVE_BLOCK_SLOT_FORBIDDEN, DECLARATIVE_REGION_BLOCK_KIND_FORBIDDEN, DECLARATIVE_BLOCK_PAYLOAD_MISMATCH Блок нельзя ставить в эту секцию или в это место секции, или его данные не подходят его виду. Что сделать: Используйте shell.element или shell.smart и сверьте поля с примером.
DECLARATIVE_ELEMENT_INVALID, DECLARATIVE_ELEMENT_HREF_FORBIDDEN, DECLARATIVE_ELEMENT_HREF_INVALID, DECLARATIVE_ELEMENT_ARIA_LABEL_INVALID Элемент shell.element записан неверно: href указан не у ссылки, ссылка ведёт не на адрес этого сайта или подпись для программ экранного доступа пустая. Что сделать: Давайте href только элементу a, пишите адрес от корня сайта и заполняйте подпись.
DECLARATIVE_REGION_SET_PASSPORT_INVALID, SET_PASSPORT_PACKAGE_UNKNOWN, SET_PASSPORT_INVALID Блок shell.set-passport записан неверно, стоит не в подвале или называет пакет, который не набор компонентов в simai-framework.lock.json; либо описание набора set.json не читается или в нём нет названия. Что сделать: Ставьте блок в область footer, укажите в package имя набора из блокировки, а в history — адрес от корня сайта; если ошибка в set.json, заново подключите пакет набора.
DECLARATIVE_VIEW_UTILITY_NOT_ALLOWED В utilities указан класс, которого нет в закреплённой версии SIMAI Framework. Что сделать: Используйте классы из справочника утилит Framework.
DECLARATIVE_AUTHOR_EXECUTABLE_SURFACE_FORBIDDEN В настройках layout есть поле, похожее на шаблон или код (в имени — template, html, script, style, php, path и подобные), или значение с <script, <style, <?php, javascript:. Настройки выбирают только зарегистрированные части. Что сделать: Уберите это поле; свою разметку оформите секцией в design/.

Привязки данных оболочки

Код Причина и что сделать
DECLARATIVE_REGION_BINDING_FORBIDDEN, DECLARATIVE_BINDING_CAPABILITY_MISMATCH bind называет неизвестную привязку или привязку, которая не подходит этой области. Что сделать: Возьмите привязку из docara atlas --json для нужной области.
BINDING_SMART_MISMATCH, BINDING_PRESENTATION_FORBIDDEN Привязка не умеет заполнять этот компонент или его представление. Что сделать: Выберите компонент и представление, которые указаны у привязки.
BINDING_OWNED_PROP_COLLISION Параметр, который заполняет привязка, задан ещё и вручную. Что сделать: Уберите этот параметр из props.

Компоненты проекта

Компоненты проекта лежат в smart/<имя>/. Создавать их удобно командой docara scaffold smart <имя> --dry-run.

Код Причина и что сделать
SMART_PROJECT_NAMESPACE_RESERVED Пространство имён ui или docara занято встроенными компонентами. Что сделать: Выберите другое имя в smart.namespace, например project.
SMART_PROVIDER_NAMESPACE_INVALID, SMART_PROVIDER_NAMESPACE_REQUIRED, SMART_PROVIDER_NAMESPACE_NOT_OWNED, SMART_PROVIDER_NAMESPACE_COLLISION Имя компонента не начинается с пространства имён проекта или оно совпадает с чужим. Что сделать: Назовите папку smart/<пространство>.<имя>/, например smart/project.notice/.
SMART_PROVIDER_JSON_INVALID, SMART_MANIFEST_INVALID, DECLARATIVE_SMART_MANIFEST_INVALID manifest.json или файл представления — не корректный JSON или в нём не хватает полей, например примера параметров для атласа. Что сделать: Запустите docara validate smart <имя> и исправьте названное поле.
SMART_PROVIDER_TEMPLATE_REQUIRED В папке template/ компонента нет ни одного шаблона .php или .blade.php. Что сделать: Добавьте шаблон, например template/default.php.
SMART_PROVIDER_ASSET_INVALID Путь к стилю или скрипту в разделе assets файла manifest.json записан не строкой или файла нет. Что сделать: Положите файл в папку компонента и укажите путь к нему строкой.
SMART_PROVIDER_ALIASES_INVALID Дополнительные имена компонента в extensions.docara.aliases записаны неверно. Что сделать: Пишите их объектом {"другое.имя": "причина"} с непустой причиной.
SMART_PROVIDER_ROOT_UNSAFE, SMART_PROVIDER_PATH_UNSAFE, SMART_PROVIDER_SYMLINK_FORBIDDEN В папке компонента есть символическая ссылка или путь выходит за smart/. Что сделать: Замените ссылки обычными файлами.
SMART_REGISTRY_COMPONENT_NOT_FOUND Страница или команда называет компонент, которого нет, — обычно опечатка в имени после :::. Что сделать: Возьмите имя из docara list smart.
DECLARATIVE_COMPOSITE_PRESET_UNKNOWN, DECLARATIVE_COMPOSITE_PRESET_INVALID У составного компонента нет такого пресета или он записан не строкой. Что сделать: Возьмите имя пресета из docara inspect smart <имя> --json.
DECLARATIVE_COMPOSITE_PROPS_INVALID, DECLARATIVE_COMPOSITE_MANIFEST_INVALID Параметры составного компонента не подходят его описанию или описание повреждено. Что сделать: Сверьте параметры с docara inspect smart <имя> --json.

Макеты и секции проекта

Свои макеты, представления, секции и блоки лежат в design/layouts/, design/views/, design/sections/ и design/blocks/.

Код Причина и что сделать
DESIGN_PROJECT_NAMESPACE_RESERVED Пространство имён docara, content, shell или ui занято. Что сделать: Используйте пространство имён проекта.
DESIGN_ARTIFACT_JSON_INVALID Файл в design/ — не корректный JSON. Что сделать: Исправьте синтаксис.
DESIGN_ARTIFACT_ID_INVALID, DESIGN_VIEW_ID_INVALID Имя файла или id записаны неверно. Что сделать: Называйте представления layout.<пространство>.<имя> или section.<пространство>.<имя>.
DESIGN_ARTIFACT_NAMESPACE_FORBIDDEN, DESIGN_NAMESPACE_COLLISION Описание использует чужое пространство имён. Что сделать: Используйте пространство имён проекта.
DESIGN_ARTIFACT_DUPLICATE Два описания с одинаковым id. Что сделать: Переименуйте одно.
DESIGN_ARTIFACT_PATH_INVALID, DESIGN_ARTIFACT_OUTSIDE_ROOT, DESIGN_PROVIDER_ROOT_INVALID, DESIGN_PROVIDER_ROOT_MISSING, DESIGN_PROVIDER_DIRECTORY_INVALID Папка design/ или её подпапка — ссылка, её нет или файл лежит не в своей подпапке. Что сделать: Держите файлы в обычных папках design/layouts, views, sections, blocks.
DESIGN_DEFAULT_LAYOUT_INVALID Ни один макет или несколько макетов объявлены макетом по умолчанию. Что сделать: Оставьте ровно один.
DESIGN_LAYOUT_VIEW_INVALID, DESIGN_LAYOUT_REGION_CONTRACT_INVALID, DECLARATIVE_LAYOUT_VIEW_REGIONS_MISMATCH Макет ссылается на несуществующее представление, или представление ставит не все области макета либо ставит какую-то дважды. Что сделать: Поставьте каждую область макета в представление ровно один раз.
DESIGN_SECTION_VIEW_INVALID, DESIGN_SECTION_SLOT_CONTRACT_INVALID, DESIGN_SECTION_REGION_CONTRACT_INVALID, DESIGN_SECTION_BLOCK_CONTRACT_INVALID, DECLARATIVE_SECTION_VIEW_SLOTS_MISMATCH Секция ссылается на несуществующее представление или блок, её места не совпадают с представлением или она не подходит указанной области. Что сделать: Проверьте секцию командой docara validate section <id>.
DESIGN_VIEW_TREE_INVALID, DECLARATIVE_VIEW_TAG_NOT_ALLOWED, DECLARATIVE_VIEW_ATTRIBUTE_NOT_ALLOWED, DECLARATIVE_VIEW_ATTRIBUTE_INVALID, DECLARATIVE_VIEW_UTILITY_INVALID, DECLARATIVE_VIEW_NODE_INVALID, DECLARATIVE_VIEW_TARGET_DUPLICATED Дерево представления использует запрещённый тег или атрибут, записано неверно или ставит одно место дважды. Что сделать: Используйте разрешённые теги и атрибуты; список показывает docara schema view --json.
DECLARATIVE_DEFINITION_NOT_ALLOWED, DESIGN_ARTIFACT_NOT_FOUND Указано описание, которое не зарегистрировано. Что сделать: Возьмите id из docara list layout, view, section или block.

Рецепты композиции

Рецепт композиции (composition_recipe в заголовке страницы) собирает страницу из готовых частей.

Код Причина и что сделать
COMPOSITION_RECIPE_PAGE_CONTENT_CONFLICT У страницы с рецептом есть свой текст. Что сделать: Перенесите видимый текст в источники рецепта, а в файле страницы оставьте только блок настроек между ---.
COMPOSITION_RECIPE_PLAN_PARITY_FAILED, COMPOSITION_RECIPE_DOCUMENT_INVALID Рецепт изменил план страницы, который он должен был лишь повторить, или описание страницы неполное. Что сделать: Пересоберите сайт целиком; если ошибка повторяется, сообщите о ней.
COMPOSITION_RECIPE_LOCK_FAILED, COMPOSITION_RECIPE_ACTIVATION_CONFLICT Рецепт одновременно собирает другая сборка. Что сделать: Дождитесь её окончания и повторите.
COMPOSITION_RECIPE_SNAPSHOT_MISSING, COMPOSITION_RECIPE_SNAPSHOT_UNKNOWN, COMPOSITION_RECIPE_SNAPSHOT_INTEGRITY_FAILED, COMPOSITION_RECIPE_SNAPSHOT_COLLISION, COMPOSITION_RECIPE_HEAD_INVALID, COMPOSITION_RECIPE_HEAD_COLLISION, COMPOSITION_RECIPE_DIGEST_INVALID, COMPOSITION_RECIPE_PAGE_KEY_INVALID, COMPOSITION_RECIPE_RESULT_INVALID, COMPOSITION_RECIPE_ACTIVATION_FAILED, COMPOSITION_RECIPE_ACTIVATION_REVISION_INVALID Сохранённый результат рецепта повреждён, изменён вручную или его не удалось записать. Что сделать: Удалите папку .docara/composition-recipe/ в корне проекта и выполните полную сборку.

См. также