Помимо отображения объектов, в компоненте настраиваются вывод форм для добавления и редактирования объектов. Настраивание альтернативных форм может понадобиться в том случае, если вам нужно поместить форму для пользователей на сайте и её нужно стилизовать в соответствии с требованиями дизайна или когда нужно скрыть некоторые поля в форме.
Откройте форму редактирования компонента и перейдите на вкладку «Шаблоны действий». В разделе находится ряд вкладок: добавление, изменение, удаление, поиск.
По умолчанию все поля пустые. Для того, чтобы редактировать нужную форму нажмите на ссылку «Сгенерировать код…». После генерации кода вы сможете настроить формы или условия по своему усмотрению.
У форм есть переменная $warnText, отвечающая за вывод ошибок, возникающих при заполнении формы. Поместите её в нужном месте.
Удобнее и правильнее всего создавать свою форму на основе формы, сгенерированной системой.
Приведём пример формы добавления с двумя полями: Название и Файл:
<?=( $warnText ? "Ошибка: $warnText" : NULL )?> <form name='adminForm' enctype='multipart/form-data' method='post' action='/netcat/add.php'> <input name='admin_mode' type='hidden' value='<?=$admin_mode?>' /> <input name='catalogue' type='hidden' value='<?=$catalogue?>' /> <input name='cc' type='hidden' value='<?=$cc?>' /> <input name='sub' type='hidden' value='<?=$sub?>' /> <input name='posting' type='hidden' value='1' /> <input name='f_Parent_Message_ID' type='hidden' value='<?=$f_Parent_Message_ID?>' /> <?=nc_form_moderate('add', $admin_mode, 0, $systemTableID, $current_cc, (isset($f_Checked) ? $f_Checked : null), $f_Priority , $f_Keyword, $f_ncTitle, $f_ncKeywords, $f_ncDescription )?> </div> <?=nc_string_field("Name", "", $classID, 1) ?><br /> <br /> <?=nc_file_field("File", "", $classID, 1);?><br /> <br /> <br/> Звездочкой (*) отмечены поля, обязательные для заполнения <br/><br/> <?=nc_submit_button(NETCAT_MODERATION_BUTTON_ADD)?> </form>
Функции генерации полей описаны в справочнике по API.
Вы можете переопределить значения полей по своему усмотрению.
Например, вывод строкового поля
<?=nc_string_field("Name", "", $classID, 1) ?>
можно заменить на
<input type='input' name='f_Name' value='<?=$f_Name?>'>
ВАЖНО! Если в альтернативной форме будет отсутствовать какое либо поле и соответственно не будет передано никакое значение, то в объект сохранится пустое значение.
По умолчанию данные, передаваемые в форме, проверяются на соответствие введённого значения типу поля. Сообщение об ошибке записывается в переменную $warnText и выводится на экран.
Некоторые условия, не входящие в стандартные функции: проверка на заполненность или соответствие формату, можно дополнить своим условием, подобного вида:
if (!$f_field1 && !$f_field2) { $warnText = "Необходимо заполнить Field1 или Field2!"; $posting = 0; }
Кроме этого в поле можно писать любой PHP-код.
В данное поле помещается код, выполняющийся после добавления объекта. Это может быть сообщение об удачном добавлении, ссылки для перехода в другие разделы, автоматический редирект пользователя на нужную страницу, отправка письма, операции с базой данных и т.д.
В поле можно вписать любой PHP-код.
Назначение и функциональность этих форм полностью идентично формам добавления. Разница лишь в том, что эти действия предназначены и работают при изменении объекта.
ВАЖНО! Если в альтернативной форме будет отсутствовать какое либо поле и соответственно не будет передано никакое значение, то в объект сохранится пустое значение.
ВАЖНО! Поле f_Checked
является обязательным для заполнения.
В версии 5.6.0.16080 и более поздних можно установить параметр partial
, делающий возможным частичную передачу формы.
<input type="hidden" name="partial" value="1" />
При наличии параметра partial
будут сохранены только значения полей, переданные в форме. Обратите внимание, что в условиях изменения, действии после изменения в переменных $f_ИмяПоля
будут доступны только переданные в форме поля.
Начиная с версии 5.5.0.15208 имеется возможность управлять видом диалогов добавления и изменения объектов. Для этого шаблон добавления или изменения должен быть размечен особым образом.
Существует два варианта разметки — полный и упрощённый.
Полный вариант разметки позволяет указать не только набор вкладок, но и заголовок и подвал диалога, а также скрыть стандартные вкладки (например, вкладку «Дополнительно»). Пример полной разметки:
<div class="nc-modal-dialog"> <div class="nc-modal-dialog-header"> <h2> Заголовок диалога, у стандартных диалогов используется <?= $current_cc["Sub_Class_Name"] ?> </h2> </div> <div class="nc-modal-dialog-body"> <!-- Тэг form и скрытые параметры, как указано в разделе «Форма добавления» --> <form ...> <input type="hidden" ...> <div data-tab-caption="Название первой вкладки" data-tab-id="опциональный_id_вкладки_1"> Содержимое первой вкладки </div> <div data-tab-caption="Название второй вкладки" data-tab-id="опциональный_id_вкладки_2"> Содержимое второй вкладки </div> </form> </div> <div class="nc-modal-dialog-footer"> <div class="nc-modal-dialog-footer-text"> Можно вывести дополнительный текст в подвале диалога </div> <!-- Для стандартных кнопок нужно указать атрибут data-action: --> <button data-action="close">Закрыть</button> <button data-action="submit">Сохранить</button> <button data-action="save-draft">Сохранить черновик</button> <button class="nc-btn nc--red"> Это красная кнопка без стандартной функции </button> </div> <script> // здесь можно добавить javascript-код, который будет выполнен // при открытии диалога </script> </div>
ВАЖНО: при использовании полной разметки всё содержимое диалога, включая тэги <script>
, должно быть внутри <div class="nc-modal-dialog">
.
Вкладка «Дополнительно» будет добавлена автоматически. Если вы не хотите, чтобы вкладка «Дополнительно» была показана, добавьте к тэгу div.nc-modal-dialog
атрибут data-hidden-tabs="tab-system"
:
<div class="nc-modal-dialog" data-hidden-tabs="tab-system">
В большинстве случаев нет необходимости менять заголовок и подвал диалога. В этих случаях достаточно указать только тэги с атрибутами data-tab-caption
, например:
<!-- Тэг form и скрытые параметры, как указано в разделе «Форма добавления» --> <form ...> <input type="hidden" ...> <div data-tab-caption="Название первой вкладки"> Содержимое первой вкладки </div> <div data-tab-caption="Название второй вкладки"> Содержимое второй вкладки </div> </form>
Чтобы получить в JavaScript можно получить открытый диалог, используйте:
var dialog = nc.ui.modal_dialog.get_current_dialog();
У объекта nc.ui.modal_dialog
, полученного указанным способом, доступны методы:
dialog.change_tab(tab_id)
— открывает вкладку с указанным значением атрибута data-tab-id
dialog.find(selector)
— возвращает jQuery-объект с элементами, удовлетворяющими условиям селектора, например: dialog.find('.tpl-property-name')
На странице выводятся ссылки для подтверждения и удаления объекта.
HTML-код, записанный в это поле, будет доступен в префиксе или суффиксе списка объектов в переменной $searchForm. Форму поиска можно переопределить по своему усмотрению.
В том случае, если у раздела по умолчанию задано действие «Поиск», будет выводиться расширенная форма поиска по компоненту.
Комментарии 8
[QUOTE]можно заменить на [CODE]<input type=’input’ name=’f_Name’ value=[B]’<?=$f_Name[COLOR=FF0000]?’>[/COLOR][/B]
[/CODE][/QUOTE]
Думаю правильней так:
[CODE]<input type=’input’ name=’f_Name’ value=’<?=$f_Name?>'
[/CODE]