In-Portal Developers Guide

This is a wiki-based Developers Guide for In-Portal Open Source CMS. The purpose of this guide is to provide advanced users, web developers and programmers with documentation on how to expand, customize and improve the functionality and the code the In-Portal software. Please consider contributing to our documentation writing effort.

K4:Описание полей таблицы

From In-Portal Developers Guide

(Difference between revisions)
Jump to: navigation, search
(дополнение)
Line 1: Line 1:
{{toc | category = Unit Configs | sortkey = 002.001}}
{{toc | category = Unit Configs | sortkey = 002.001}}
-
Usually, each unit config is created to interact with '''one''' database table. For this, each field from the database table must be declared in the unit config. The ''<code>[[#Fields|Fields]]</code>'' option exists for this purpose. This option is an associative array (almost all options in a unit config are associative arrays), in which the keys are the names of the table fields and the values are the options of these fields. This array can, for example, look like this:
+
Обычно каждый unit config создаётся для взаимодействия с '''одной''' таблицей в базе данных. Для этого в нём необходимо объявить каждое поле из связанной таблицы в базе данных. Для этого существует опция ''<code>[[#Fields|Fields]]</code>''. Эта опция является ассоциативным массивом (почти все опции в unit config это ассоциативные массивы) , в котором ключи это названия полей в таблице, а значения это опции этих полей. Это массив может быть например таким:
<source lang="php">
<source lang="php">
'Fields' => Array (
'Fields' => Array (
Line 8: Line 8:
),
),
</source>
</source>
-
From the above example it's not difficult to see that ''<code>ProductId</code>'', ''<code>Name</code>'' and ''<code>Description</code>'' are fields, and the contents of the arrays are the sets of options for these fields. Fields options are divided into 3 groups:
+
Из приведённого примера несложно заметить, что ''<code>ProductId</code>'', ''<code>Name</code>'' и ''<code>Description</code>'' это поля, а содержание остальных массивов это набор опций этих полей. Опции поля делятся на 3 группы:
-
* '''required''' - must always be there;
+
* '''обязательные''' - должны всегда присутствовать;
-
* '''validation''' - used to validate field values against the restrictions on the field values;
+
* '''проверки соответствия''' (validation) - используются при проверки соответствия значения в поле с наложенными ограничениями на значение в поле;
-
* '''formatter''' - used by the indicated [[K4:Formatters|formatter]].
+
* '''форматера''' - используются указанным [[K4:Formatters|форматером]].
-
== Required Options ==
+
 
 +
== Обязательные опции ==
{| class="prettytable"
{| class="prettytable"
-
! Option Name || Option Description
+
! название опции || описание опции
|-
|-
-
| {{ConfigProperty|type|string}} || Indicates the type of value that's going to be stored in the field. For all numerical types, it's automatically checked that the field value is a number. If this field has something else, for example a String, then at the validation stage this field will contain an error. The following values are available for this option:
+
| {{ConfigProperty|type|string}} || Указывает тип значения, которое будет храниться в поле. Для всех численных типов автоматически проверяется, что значение в поле является числом. Если в таком поле будет не число, а например, строка, то на этапе проверки соответствия (validation) в этом поле будет ошибка. Доступны следующие значения этой опции:
-
* '''int''' - whole number (e.g. 543);
+
* '''int''' - целое число (напр. 543);
-
* '''float''' - floating point number (e.g. 14.66);
+
* '''float''' - число с плавающей точностью (напр. 14.66);
-
* '''string''' - line of text (e.g. 'validate').
+
* '''string''' - строка (напр. 'проверка').
-
'''''Deprecated Types (Don't Use):'''''
+
'''''Устаревшие типы (не использовать):'''''
-
* '''integer''' - synonym ''int'';
+
* '''integer''' - синоним ''int'';
-
* '''double''' - synonym ''float'';
+
* '''double''' - синоним ''float'';
-
* '''real'''  - synonym ''float'';
+
* '''real'''  - синоним ''float'';
-
* '''numeric''' - synonym ''float''.
+
* '''numeric''' - синоним ''float''.
|-
|-
-
| {{ConfigProperty|default|mixed}} || Default field value. '''Must correspond''' to the default value of this field in the database. If it's physically impossible (database restriction) to synchronize default values in options and in the database field, then this doesn't have to be done. For example, when using [[K4:Formatters#kDateFormatter|kDateFormatter]] it's allowed to put ''<code>'#NOW#'</code>'' as the default value, but the database field with the date is numeric (since it's a timestamp) and such a value can't be stored in the database.
+
| {{ConfigProperty|default|mixed}} || Значение по умолчанию в этом поле. '''Должно совпадать''' со значением по умолчанию у этого поля в базе данных. Если физически не возможно (ограничения в базе данных) синхронизировать значение по умолчанию в базе данных и в опциях поля, то этого делать не надо. Например, при использовании [[K4:Formatters#kDateFormatter|kDateFormatter]] можно ставить ''<code>'#NOW#'</code>'' в качестве значения по умолчанию, но поле с датой числовое (т.к. в нём находиться timestamp) и такое значение в базу данных не записать.
|}
|}
-
== Not Required Options ==
+
== Необязательные опции ==
{| class="prettytable"
{| class="prettytable"
-
! Option Name || Option Description
+
! название опции || описание опции
|-
|-
-
| {{ConfigProperty|not_null|int}} || If the field in the database is setup as "<code>NOT NULL</code>", then this option needs to be set.
+
| {{ConfigProperty|not_null|int}} || Если поле в базе данных настроено, как "<code>NOT NULL</code>", то надо указывать данную опцию.
 +
|-
 +
| {{ConfigProperty|totals|string}} || Название агрегатной функции базы данных (напр. <code>AVG</code>, <code>SUM</code>, <code>COUNT</code> и т.п.), которая будет использоваться для подсчёта <code>total</code> значения по колонке, в которой будет выводиться это поле.
|}
|}
-
== Validation Options ==
+
== Опции проверки соответствия ==
{| class="prettytable"
{| class="prettytable"
-
! Option Name || Option Description
+
! название опции || описание опции
|-
|-
-
| {{ConfigProperty|error_field|string}} || Name of the field which stores validation error messages '''in place''' of this field. It's useful when errors from several [[#VirtualFields|virtual fields]] need to show in one [[#Fields|real field]].
+
| {{ConfigProperty|error_field|string}} || Название поля, в которое должны писаться ошибки проверок '''вместо''' этого поля. Бывает полезно, когда ошибки от нескольких [[#VirtualFields|виртуальных полей]] должны показываться у одного [[#Fields|реально поля]].
|-
|-
-
| {{ConfigProperty|max_value_inc|int, float}} || Maximum value ('''inclusive''') that can be in this field. Only for numeric fields.
+
| {{ConfigProperty|max_value_inc|int, float}} || Максимальное значение ('''включая''' это значение), которое может быть в этом поле. Только для числовых полей.
|-
|-
-
| {{ConfigProperty|min_value_inc|int, float}} || Minimum value ('''inclusive''') that can be in this field. Only for numeric fields.
+
| {{ConfigProperty|min_value_inc|int, float}} || Минимальное значение ('''включая''' это значение), которое может быть в этом поле. Только для числовых полей.
|-
|-
-
| {{ConfigProperty|max_value_exc|int, float}} || Minimum value ('''exclusive''') that can be in this field. Only for numeric fields.
+
| {{ConfigProperty|max_value_exc|int, float}} || Максимальное значение ('''не включая''' это значение), которое может быть в этом поле. Только для числовых полей.
|-
|-
-
| {{ConfigProperty|min_value_exc|int, float}} || Minimum value ('''exclusive''') that can be in this field. Only for numeric fields.
+
| {{ConfigProperty|min_value_exc|int, float}} || Минимальное значение ('''не включая''' это значение), которое может быть в этом поле. Только для числовых полей.
|-
|-
-
| {{ConfigProperty|max_len|int}} || Maximum String length that can be in this field. Only for String fields.
+
| {{ConfigProperty|max_len|int}} || Максимальная длинна строки, которая может быть в этом поле. Только для строковых полей.
|-
|-
-
| {{ConfigProperty|min_len|int}} || Minimum String length that can be in this field. Only for String fields.
+
| {{ConfigProperty|min_len|int}} || Минимальная длинна строки, которая может быть в этом поле. Только для строковых полей.
|-
|-
-
| {{ConfigProperty|unique|array}} || To verify that the field in the table is unique. If it's necessary to check that a field is unique compared to other fields, then they need to be in an array. If this isn't necessary (i.e. we're checking just this one field), then an empty array needs to be set. '''It's not necessary''' to put the field that has this option set into the array.
+
| {{ConfigProperty|unique|array}} || Осуществлять проверку на уникальность значения поля в таблице. Если надо проверить уникальность в сочетании со значениями из других полей, то их надо перечислить в виде массива. Если этого делать не надо (т.е. проверяем это поле само по себе), то надо указать пустой массив. '''Не надо''' перечислять в массиве поле, у которого указанна данная опция.
|-
|-
-
| {{ConfigProperty|current_table_only|boolean}} || Checks whether a value in a field is [[#unique|unique]] in the current table (live or temporary). By default, the field is checked in both the live and temporary tables (if accessible).
+
| {{ConfigProperty|current_table_only|boolean}} || Проверять [[#unique|уникальность]] значения в поле только из текущей таблицы (live или временной). По умолчанию проверяется из live таблицы и из временной (если доступна).
|-
|-
-
| {{ConfigProperty|required|int, boolean}} || '''<code>'min_value_exc' => 0</code>'''. Field must be filled in. If a value is not set, then the field will contain an error. '''Zero''' as the field value doesn't result in an error saying that the field wasn't filled in. However, if the field value being set to zero should result in an error, it's possible to additionally set an interval for what the value must be, for example '''<code>'min_value_exc' => 0</code>'''.
+
| {{ConfigProperty|required|int, boolean}} || Поле обязательно к заполнению. Если значение не указано, то в поле будет ошибка. Несмотря на ошибочное мнение '''ноль''', в качестве значения поля не вызывает ошибку о том, что в поле не указано значение. Но если 0, указанный в качестве значения, должен вызывать ошибку можно дополнительно указать опции ограничения интервала значения, напр. '''<code>'min_value_exc' => 0</code>'''.
-
 
+
|}
|}
-
All of the above described options can be combined into meaningful groups:
+
Все выше описанные опции можно объединить в группы по смыслу:  
-
* '''intervals''' (''<code>max_value_inc</code>'', ''<code>min_value_inc</code>'', ''<code>max_value_exc</code>'', ''<code>min_value_exc</code>'') - options used for checking whether a field value falls in the indicated range.
+
* '''интервалы''' (''<code>max_value_inc</code>'', ''<code>min_value_inc</code>'', ''<code>max_value_exc</code>'', ''<code>min_value_exc</code>'') - опции, использующиеся для проверки принадлежности значения поля указанному интервалу (range);
-
* '''length''' (''<code>max_len</code>'', ''<code>min_len</code>'') - options used for checking the length of a String.
+
* '''длинна''' (''<code>max_len</code>'', ''<code>min_len</code>'') - опции, использующиеся для проверки длинны строки (length).
-
{{TipBox|If one or another option is not need, then its declaration can simply be removed from the array of field options, making it not necessary to set its value to ''<code>0</code>'' or ''<code>false</code>''.}}
+
{{TipBox|Если та, или иная опция не нужна, то можно просто убрать её определение из массива опций поля. В таком случае не надо будет ставить её значение в ''<code>0</code>'' или ''<code>false</code>''.}}
-
== Error Messages ==
+
== Сообщения об ошибках ==
-
For each field it's possible to set alternative error message text for all error messages by using the option {{ConfigProperty|error_msgs|array}}. The below table describes all standard errors:
+
У каждого поля можно указать альтернативные тексты для всех ошибок используя опцию {{ConfigProperty|error_msgs|array}}. Ниже приведена таблица, в которой описаны все стандартные ошибки:
{| class="prettytable"
{| class="prettytable"
-
! Pseudo || Description || Default Value || Controlled by Options
+
! pseudo || описание || значение по умолчанию || управляется опциями
|-
|-
-
| <code>required</code> || Field value not filled in. || <code>!la_err_required!</code> || [[#required|required]]
+
| <code>required</code> || Значение в поле не заполнено. || <code>!la_err_required!</code> || [[#required|required]]
|-
|-
-
| <code>unique</code> || Field value not unique. || <code>!la_err_unique!</code> || [[#unique|unique]]
+
| <code>unique</code> || Значение в поле не уникально. || <code>!la_err_unique!</code> || [[#unique|unique]]
|-
|-
-
| <code>value_out_of_range</code> || Field value is not within the indicated range || <code>!la_err_value_out_of_range!</code> || [[#max_value_inc|max_value_inc]], [[#min_value_inc|min_value_inc]], [[#max_value_exc|max_value_exc]], [[#min_value_exc|min_value_exc]]
+
| <code>value_out_of_range</code> || Значение в поле не находиться в разрешённом интервале значений || <code>!la_err_value_out_of_range!</code> || [[#max_value_inc|max_value_inc]], [[#min_value_inc|min_value_inc]], [[#max_value_exc|max_value_exc]], [[#min_value_exc|min_value_exc]]
|-
|-
-
| <code>length_out_of_range</code> || String too long. || <code>!la_err_length_out_of_range!</code> || [[#max_len|max_len]], [[#min_len|min_len]]
+
| <code>length_out_of_range</code> || Длинна строки превышена. || <code>!la_err_length_out_of_range!</code> || [[#max_len|max_len]], [[#min_len|min_len]]
|-
|-
-
| <code>bad_type</code> || Field value type isn't the type it's set to be (for example, a character was entered instead of an integer). || <code>!la_err_bad_type!</code> || [[#type|type]]
+
| <code>bad_type</code> || Тип значения в поле не соответствует описанию поля (напр. ввели букву вместо числа). || <code>!la_err_bad_type!</code> || [[#type|type]]
|-
|-
-
| <code>invalid_format</code> || String format isn't as required. || <code>!la_err_invalid_format!</code> || [[#regexp|regexp]]
+
| <code>invalid_format</code> || Формат строки не соответствует требуемому. || <code>!la_err_invalid_format!</code> || [[#regexp|regexp]]
|-
|-
-
| <code>bad_date_format</code> || Date format isn't as required. || <code>!la_err_bad_date_format!</code> || [[K4:Formatters#kDateFormatter|опции kDateFormatter]]
+
| <code>bad_date_format</code> || Формат введённой даты не соответствует требуемому. || <code>!la_err_bad_date_format!</code> || [[K4:Formatters#kDateFormatter|опции kDateFormatter]]
|-
|-
-
| <code>primary_lang_required</code> || Field value not entered in primary language. || <code>!la_err_primary_lang_required!</code> || [[#required|required]], [[K4:Formatters#kMultiLanguage|kMultiLanguage Options]]
+
| <code>primary_lang_required</code> || Значение в поле на первичном (primary) языке не заполнено. || <code>!la_err_primary_lang_required!</code> || [[#required|required]], [[K4:Formatters#kMultiLanguage|опции kMultiLanguage]]
|-
|-
-
| <code>bad_file_format</code> || Attempt to upload a file whose (<code>mime-type</code>) isn't in the allowed types. || <code>!la_error_InvalidFileFormat!</code> || [[K4:Formatters#allowed_types|allowed_types]], [[K4:Formatters#kUploadFormatter|опции kUploadFormatter]]
+
| <code>bad_file_format</code> || Попытка загрузить файл, у которого миме-тип (<code>mime-type</code>) не находиться в списке разрешённых. || <code>!la_error_InvalidFileFormat!</code> || [[K4:Formatters#allowed_types|allowed_types]], [[K4:Formatters#kUploadFormatter|опции kUploadFormatter]]
|-
|-
-
| <code>bad_file_size</code> || Attempt to upload a file whose size is greater than allowed maximum size. || <code>!la_error_FileTooLarge!</code> || [[K4:Formatters#max_size|max_size]], [[K4:Formatters#kUploadFormatter|опции kUploadFormatter]]
+
| <code>bad_file_size</code> || Попытка загрузить файла, размер которого превышает разрешённый. || <code>!la_error_FileTooLarge!</code> || [[K4:Formatters#max_size|max_size]], [[K4:Formatters#kUploadFormatter|опции kUploadFormatter]]
|-
|-
-
| <code>cant_save_file</code> || File uploaded to the server couldn't be saved to the requested directory. || <code>!la_error_cant_save_file!</code> || [[K4:Formatters#upload_dir|upload_dir]], [[K4:Formatters#kUploadFormatter|опции kUploadFormatter]]
+
| <code>cant_save_file</code> || Загруженный на сервер файл неудалось сохранить в требуемую директорию. || <code>!la_error_cant_save_file!</code> || [[K4:Formatters#upload_dir|upload_dir]], [[K4:Formatters#kUploadFormatter|опции kUploadFormatter]]
|}
|}
-
This option is set in the form of an associative one-dimensional array, where each key is an error's "<code>pseudo</code>" (see the above table) and each field is the error message.
+
Эта опция задаётся в виде ассоциативного одномерного массива, в ключах которого указаны "<code>pseudo</code>" ошибок (см. приведённую выше таблицу), а в значениях соответствующие им тексты ошибок:
<source lang="php">
<source lang="php">
Line 105: Line 107:
)
)
</source>
</source>
-
To make it so that a phrase translation is used as an error message it's name must be enclosed in exclamation marks:
+
Если требуется чтобы перевод фразы стал текстом сообщения об ошибке, то нужно заключить её название в восклицательные знаки:
-
* "<code>!la_error_ErrorPhrase!</code>" - phrase (it's translation in the current language will be the error message);
+
* "<code>!la_error_ErrorPhrase!</code>" - фраза (её перевод на текущем языке это текст ошибка);
-
* "<code>Error Message</code>" - text (will be the same for all languages).
+
* "<code>Error Message</code>" - текст (будет один для всех языков).
 +
 
 +
== Опции форматера ==
 +
Все оставшиеся опции обрабатываются указанным [[K4:Formatters|форматером]]. Вот, к примеру некоторые из них:
-
== Formatter Options ==
 
-
All of the remaining options are processed with specific [[K4:Formatters|formatters]]. Some of them for example are:
 
{| class="prettytable"
{| class="prettytable"
-
! Option Name || Option Description
+
! название опции || описание опции
|-
|-
-
| {{ConfigProperty|formatter|string}} || Name of the formatter's class. Here are the most common classes:
+
| {{ConfigProperty|formatter|string}} || Название класса накладываемого форматера. Вот самые ходовые классы:
-
* [[K4:Formatters#kFormatter|kFormatter]] - For processing numbers, monetary amounts, postal addresses
+
* [[K4:Formatters#kFormatter|kFormatter]] - для обработки чисел, денежных сумм, почтовых адресов
-
* [[K4:Formatters#kOptionsFormatter|kOptionsFormatter]] - For working with restricted choice elements (dropdown, radio buttons, etc.)
+
* [[K4:Formatters#kOptionsFormatter|kOptionsFormatter]] - для работы с элементами ограниченного выбора (dropdown, radio buttons и т.п.)
-
* [[K4:Formatters#kDateFormatter|kDateFormatter]] - For processing dates
+
* [[K4:Formatters#kDateFormatter|kDateFormatter]] - для обработки дат
-
* [[K4:Formatters#kUploadFormatter|kUploadFormatter]] - For uploading files to the server
+
* [[K4:Formatters#kUploadFormatter|kUploadFormatter]] - для загрузки файлов на сервер
-
The specifics about which formatters exist and how to use them can be read in [[K4:Formatters|this article]].
+
Подробнее о том, какие есть форматеры и как их использовать можно прочесть в [[K4:Formatters|этой статье]].
|}
|}
-
== Automatic Structuring ==
+
== Автоматическое построение структуры ==
-
K4 has a mechanism that automatically builds an array for [[K4:Unit Configs#Fields|Fields]] options. To use it, following these steps:
+
В K4 есть механизм, который автоматически выстраивает массив для опции [[K4:Unit Configs#Fields|Fields]]. Чтобы воспользоваться им следуйте приведённым шагам:
-
* Go to section "Configuration -> System Tools" (in Platform) or "Tools -> System Tools" (in In-Portal);
+
* пойти в секцию "Configuration -> System Tools" (в Platform) или "Tools -> System Tools" (в In-Portal);
-
* In the field "Table Structure" enter the '''table name'''' (without [[K4:Константы#TABLE_PREFIX|TABLE_PREFIX]] is ok) or [[K4:Unit Configs|unit config]] [[K4:Unit Configs#Prefix|prefix]];
+
* в поле "Table Structure" вписать '''имя таблицы''' (можно без [[K4:Константы#TABLE_PREFIX|TABLE_PREFIX]]) или [[K4:Unit Configs#Prefix|префикс]] от [[K4:Unit Configs|unit config]];
-
* Press "Go" button;
+
* нажать на кнопку "Go";
-
* A new window will open with the structure of the table:
+
* откроется новое окно со структурой введённой таблицы:
-
[[Image:Table Structure.gif|left|frame|Automatically built table structure]]
+
[[Image:Table Structure.gif|left|frame|Автоматически построенная структура таблицы]]
<br clear="both">
<br clear="both">
-
{{InfoBox|When adding new fields to a table all of the above steps need to be taken, but from the result copy only the needed fields rather than all of them as usual. It's not necessary to write everything by hand.}}
+
{{InfoBox|При добавлении новых полей в таблицу нужно повторить все выше описанные шаги, но из результата скопировать описание только нужных полей, а не всех как обычно. Не надо писать всё руками.}}
-
While building the structure of the fields, the following options are automatically set (if possible to determine):
+
При построении структуры полям автоматически прописываются (если удаётся определить) следующие опции:
-
* '''<code>type</code>''' - PHP data value type that's going to be stored in the field;
+
* '''<code>type</code>''' - php тип значения, которое будет храниться в поле;
-
* '''<code>not_null</code>''' - NULL or NOT NULL;
+
* '''<code>not_null</code>''' - NULL или NOT NULL пометка;
-
* '''<code>default</code>''' - Default value;
+
* '''<code>default</code>''' - значение по умолчанию;
-
* '''<code>formatter</code>''' - Formatter class, for now only for numerical fields (float, double, decimal);
+
* '''<code>formatter</code>''' - класс форматера, пока только для дробный полей (float, double, decimal);
-
* '''<code>max_len</code>''' - Limit on the length of a field value, only for String fields (varchar).
+
* '''<code>max_len</code>''' - ограничение по длине значения в поле, только для строковых полей (varchar).
-
Functionality available starting with [[K4:Core v 4.1.0|Core v 4.1.0]].
+
Функциональность доступна начиная с [[K4:Core v 4.1.0|Core v 4.1.0]].

Revision as of 18:00, 4 November 2009

Unit Configs Unit Configs
Статьи в этой категории

Обычно каждый unit config создаётся для взаимодействия с одной таблицей в базе данных. Для этого в нём необходимо объявить каждое поле из связанной таблицы в базе данных. Для этого существует опция Fields. Эта опция является ассоциативным массивом (почти все опции в unit config это ассоциативные массивы) , в котором ключи это названия полей в таблице, а значения это опции этих полей. Это массив может быть например таким:

'Fields' => Array (
	'ProductId' => Array('type' => 'int', 'not_null' => 1, 'default' => 0),
	'Name' => Array ('type' => 'string', 'formatter' => 'kMultiLanguage', 'required' => 1, 'max_len' => 255, 'default' => ''),
	'Description' => Array ('type' => 'string', 'formatter' => 'kMultiLanguage', 'default' => NULL),
),

Из приведённого примера несложно заметить, что ProductId, Name и Description это поля, а содержание остальных массивов это набор опций этих полей. Опции поля делятся на 3 группы:

  • обязательные - должны всегда присутствовать;
  • проверки соответствия (validation) - используются при проверки соответствия значения в поле с наложенными ограничениями на значение в поле;
  • форматера - используются указанным форматером.

Contents

Обязательные опции

название опции описание опции
type (string) Указывает тип значения, которое будет храниться в поле. Для всех численных типов автоматически проверяется, что значение в поле является числом. Если в таком поле будет не число, а например, строка, то на этапе проверки соответствия (validation) в этом поле будет ошибка. Доступны следующие значения этой опции:
  • int - целое число (напр. 543);
  • float - число с плавающей точностью (напр. 14.66);
  • string - строка (напр. 'проверка').


Устаревшие типы (не использовать):

  • integer - синоним int;
  • double - синоним float;
  • real - синоним float;
  • numeric - синоним float.
default (mixed) Значение по умолчанию в этом поле. Должно совпадать со значением по умолчанию у этого поля в базе данных. Если физически не возможно (ограничения в базе данных) синхронизировать значение по умолчанию в базе данных и в опциях поля, то этого делать не надо. Например, при использовании kDateFormatter можно ставить '#NOW#' в качестве значения по умолчанию, но поле с датой числовое (т.к. в нём находиться timestamp) и такое значение в базу данных не записать.

Необязательные опции

название опции описание опции
not_null (int) Если поле в базе данных настроено, как "NOT NULL", то надо указывать данную опцию.
totals (string) Название агрегатной функции базы данных (напр. AVG, SUM, COUNT и т.п.), которая будет использоваться для подсчёта total значения по колонке, в которой будет выводиться это поле.

Опции проверки соответствия

название опции описание опции
error_field (string) Название поля, в которое должны писаться ошибки проверок вместо этого поля. Бывает полезно, когда ошибки от нескольких виртуальных полей должны показываться у одного реально поля.
max_value_inc (int, float) Максимальное значение (включая это значение), которое может быть в этом поле. Только для числовых полей.
min_value_inc (int, float) Минимальное значение (включая это значение), которое может быть в этом поле. Только для числовых полей.
max_value_exc (int, float) Максимальное значение (не включая это значение), которое может быть в этом поле. Только для числовых полей.
min_value_exc (int, float) Минимальное значение (не включая это значение), которое может быть в этом поле. Только для числовых полей.
max_len (int) Максимальная длинна строки, которая может быть в этом поле. Только для строковых полей.
min_len (int) Минимальная длинна строки, которая может быть в этом поле. Только для строковых полей.
unique (array) Осуществлять проверку на уникальность значения поля в таблице. Если надо проверить уникальность в сочетании со значениями из других полей, то их надо перечислить в виде массива. Если этого делать не надо (т.е. проверяем это поле само по себе), то надо указать пустой массив. Не надо перечислять в массиве поле, у которого указанна данная опция.
current_table_only (boolean) Проверять уникальность значения в поле только из текущей таблицы (live или временной). По умолчанию проверяется из live таблицы и из временной (если доступна).
required (int, boolean) Поле обязательно к заполнению. Если значение не указано, то в поле будет ошибка. Несмотря на ошибочное мнение ноль, в качестве значения поля не вызывает ошибку о том, что в поле не указано значение. Но если 0, указанный в качестве значения, должен вызывать ошибку можно дополнительно указать опции ограничения интервала значения, напр. 'min_value_exc' => 0.

Все выше описанные опции можно объединить в группы по смыслу:

  • интервалы (max_value_inc, min_value_inc, max_value_exc, min_value_exc) - опции, использующиеся для проверки принадлежности значения поля указанному интервалу (range);
  • длинна (max_len, min_len) - опции, использующиеся для проверки длинны строки (length).
Image:Tipbox Icon.gif Если та, или иная опция не нужна, то можно просто убрать её определение из массива опций поля. В таком случае не надо будет ставить её значение в 0 или false.

Сообщения об ошибках

У каждого поля можно указать альтернативные тексты для всех ошибок используя опцию error_msgs (array). Ниже приведена таблица, в которой описаны все стандартные ошибки:

pseudo описание значение по умолчанию управляется опциями
required Значение в поле не заполнено. !la_err_required! required
unique Значение в поле не уникально. !la_err_unique! unique
value_out_of_range Значение в поле не находиться в разрешённом интервале значений !la_err_value_out_of_range! max_value_inc, min_value_inc, max_value_exc, min_value_exc
length_out_of_range Длинна строки превышена. !la_err_length_out_of_range! max_len, min_len
bad_type Тип значения в поле не соответствует описанию поля (напр. ввели букву вместо числа). !la_err_bad_type! type
invalid_format Формат строки не соответствует требуемому. !la_err_invalid_format! regexp
bad_date_format Формат введённой даты не соответствует требуемому. !la_err_bad_date_format! опции kDateFormatter
primary_lang_required Значение в поле на первичном (primary) языке не заполнено. !la_err_primary_lang_required! required, опции kMultiLanguage
bad_file_format Попытка загрузить файл, у которого миме-тип (mime-type) не находиться в списке разрешённых. !la_error_InvalidFileFormat! allowed_types, опции kUploadFormatter
bad_file_size Попытка загрузить файла, размер которого превышает разрешённый. !la_error_FileTooLarge! max_size, опции kUploadFormatter
cant_save_file Загруженный на сервер файл неудалось сохранить в требуемую директорию. !la_error_cant_save_file! upload_dir, опции kUploadFormatter

Эта опция задаётся в виде ассоциативного одномерного массива, в ключах которого указаны "pseudo" ошибок (см. приведённую выше таблицу), а в значениях соответствующие им тексты ошибок:

'error_msgs' => Array (
	'required' => '!la_error_CustomRequiredError!'
)

Если требуется чтобы перевод фразы стал текстом сообщения об ошибке, то нужно заключить её название в восклицательные знаки:

  • "!la_error_ErrorPhrase!" - фраза (её перевод на текущем языке это текст ошибка);
  • "Error Message" - текст (будет один для всех языков).

Опции форматера

Все оставшиеся опции обрабатываются указанным форматером. Вот, к примеру некоторые из них:

название опции описание опции
formatter (string) Название класса накладываемого форматера. Вот самые ходовые классы:
  • kFormatter - для обработки чисел, денежных сумм, почтовых адресов
  • kOptionsFormatter - для работы с элементами ограниченного выбора (dropdown, radio buttons и т.п.)
  • kDateFormatter - для обработки дат
  • kUploadFormatter - для загрузки файлов на сервер

Подробнее о том, какие есть форматеры и как их использовать можно прочесть в этой статье.

Автоматическое построение структуры

В K4 есть механизм, который автоматически выстраивает массив для опции Fields. Чтобы воспользоваться им следуйте приведённым шагам:

  • пойти в секцию "Configuration -> System Tools" (в Platform) или "Tools -> System Tools" (в In-Portal);
  • в поле "Table Structure" вписать имя таблицы (можно без TABLE_PREFIX) или префикс от unit config;
  • нажать на кнопку "Go";
  • откроется новое окно со структурой введённой таблицы:
Автоматически построенная структура таблицы
Автоматически построенная структура таблицы


Image:Infobox Icon.gif При добавлении новых полей в таблицу нужно повторить все выше описанные шаги, но из результата скопировать описание только нужных полей, а не всех как обычно. Не надо писать всё руками.

При построении структуры полям автоматически прописываются (если удаётся определить) следующие опции:

  • type - php тип значения, которое будет храниться в поле;
  • not_null - NULL или NOT NULL пометка;
  • default - значение по умолчанию;
  • formatter - класс форматера, пока только для дробный полей (float, double, decimal);
  • max_len - ограничение по длине значения в поле, только для строковых полей (varchar).

Функциональность доступна начиная с Core v 4.1.0.