Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

Ru:T3Doc/Extension Builder/Using the Extension Builder

From TYPO3Wiki
Jump to: navigation, search

<< назад к Главная страница по расширению Extension Builder

Работа с Архитектором расширений

Создание нового расширения

Для создания нового расширения, перейдите в режим Моделирования области (Domain Modeling). Откройте панель инструментов слева, щелкнув по небольшой стрелочке и введите значащее название для расширения, Название производителя (ВерхнийГорбатыйСинтаксис) и его ключ (без пробелов в нижнем регистре). Если нужно создать расширение, выводящее что-либо на сайт, создайте дополнение со значащим названием и ключом в нижнем регистре без пробелов. При желании, можно добавить персону, которая будет значиться как автор в формируемых файлах.

1. Модель предметной области

Затем создайте хотя бы одну модель, перетянув ее из серой кнопки "New Model Object" в макет. Дайте значащее название, начинающееся с заглавной буквы.

Откройте "Настройки объекта" и установите флажок "Корень совокупности", если эта модель является общей для других моделей. Проще всего понять, является ли эта модель корневой для совокупности других моделей, это понять - будут ли объекты этой модели запрашиваться из других объектов модели? Так, при создании моделей Сообщения и Журнала, понятно, что Журнал является "Корнем совокупности" Сообщений, а Сообщение - не является корнем никаких совокупностей. Ведь сообщения можно получить, запросив его из модели Журнала: $Blog->getPosts().

А чтобы понять, является ли Модель субъектом или объектом значением, можно задать вопрос - а имеется ли у модели "индивидуальность"? У объектов значений нет никакой индивидуальности - это просто значение. Например, объект, обозначающий цвет, можно назвать "Синий" - но нет никакого смысла содержать несколько экземпляров "Синего" объекта. Если возникают сомнения, то оставьте модель со свойством "Субъект".

Откройте панель действий и укажите все необходимые. Все выбранные действия будут настроены, как доступные для дополнения.

По-началу не беспокойтесь о действиях. Архитектор сформирует CRUD-действия по умолчанию ( *C* reate - создать, *R* ead - прочитать, *U* pdate - обновить, *D* elete - удалить), если имеется хотя бы один объект типа "Корень совокупности".


+++++++++++++++++ Проверка безопасности! +++++++++++++++

Имейте ввиду, что любое действие может быть вызвано простым добавлением параметра к URL страницы с включенным дополнением. Например, если имеется действие редактирования/обновления, то это будет выглядеть примерно так:

http://mydomain.de/mypage/?tx_extensionkey_pluginkey[action]=edit&tx_extensionkey_pluginkey[profile]=12

При этом будет загружен режим редактирования - edit view (с формой редактирования профиля), и данные с профилем в ней. Если кто-то будет манипулировать с этим URL, это будет выглядеть так:

http://mydomain.de/mypage/?tx_extensionkey_pluginkey[action]=delete&tx_extensionkey_pluginkey[profile]=23

Таким образом профиль 23 будет удален, если забыть проверить доступ, либо другие соответствующие константы.

++++++++++++++++++++++++++++++++++++++++++++

2. Добавление свойств

Названия свойств в рамках одной модели должны быть уникальны, название должно начинаться с буквы в нижнем регистре, содержать только буквы и цифры и может быть написано в нижнемГорбатомСинтаксисе, если это нужно. Текст из поля "Описание" будет выведен во внутреннем интерфейсе, как справка рядом с полем свойств.

3. Добавление связей

При создании нескольких моделей вполне закономерно добавить связи между ними. Связи должны носить название в нижнемГорбатомСинтаксисе, как и свойства, и могут быть связаны с моделью путем перетаскивания из кружка вверху свойства связи на верхний кружок связываемой модели. Для определения типа связи необходимо открыть блок "Дополнительно". Доступны следующие типы связей:

  • 1:1* значит, что одно свойство модели представляет один специфический объект из связанной модели.

Например, один человек имеет лишь одну учетную запись, которая более никем не используется, здесь уместно установить связь 1:1.

1:1 Relation in BE Form
  • 1:n* значит, что одно свойство модели представляет несколько объектов из связанной модели, но каждый из них не имеет дополнительных связей.

Например, в журнале имеется несколько записей, но каждая из них может находится только в одном, определенном журнале.

1:n Relation in BE Form
  • n:1* значит, что свойство модели представляет один объект из связанной модели, но сама связанная модель может иметь несколько связей.

Например, у каждого человека есть определенное место рождения, но и другие люди могут родиться в том же самом месте.

n:1 Relation in BE Form
  • m:n* значит, что свойство модели состоит из нескольких объектов связанной модели.

Например, у книги может быть несколько авторов, а каждый из автором может написать несколько книг.

m:n Relation in BE Form

Помимо этого, можно определить редактирование связанных объектов прямо во внутреннем интерфейсе ("inline"), то есть в форме свойств "родительского" объекта, либо в виде поля выбора (select).

4. Создание дополнения

Если для расширения требуется внешнее дополнение, то его нужно добавить в левой панели архитектора (смотрите рисунок внизу этой страницы).

5. Возможность создания внутреннего модуля

Если необходимо добавить в расширение внутренний модуль, то сделать это можно из левой панели архитектора (смотрите рисунок внизу этой страницы).

6. Сохранение расширения

Если модель представляет описываемую предметную область, можно нажать на кнопку "Save". Архитектор расширений сформирует все требуемые файлы. Для просмотра файлов, перейдите в папку typo3conf/ext/"yourExtensionKey". Ну а теперь можно начинать реализацию своей логики.

Следующий шаг: Изменение и дополнение модели

Категория:extension development