本文整理汇总了PHP中cmsForm::mapFieldsToFieldsets方法的典型用法代码示例。如果您正苦于以下问题:PHP cmsForm::mapFieldsToFieldsets方法的具体用法?PHP cmsForm::mapFieldsToFieldsets怎么用?PHP cmsForm::mapFieldsToFieldsets使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cmsForm
的用法示例。
在下文中一共展示了cmsForm::mapFieldsToFieldsets方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getItemForm
public function getItemForm($ctype, $fields, $action, $data = array(), $item_id = false, $item = false)
{
$user = cmsUser::getInstance();
// Контейнер для передачи дополнительных списков:
// $groups_list, $folders_list и т.д.
extract($data);
// Строим форму
$form = new cmsForm();
$fieldset_id = $form->addFieldset();
// Если включены категории, добавляем в форму поле выбора категории
if ($ctype['is_cats'] && ($action != 'edit' || $ctype['options']['is_cats_change'])) {
$fieldset_id = $form->addFieldset(LANG_CATEGORY, 'category');
$form->addField($fieldset_id, new fieldList('category_id', array('rules' => array(array('required')), 'generator' => function ($item) {
$content_model = cmsCore::getModel('content');
$ctype = $content_model->getContentTypeByName($item['ctype_name']);
$tree = $content_model->getCategoriesTree($item['ctype_name']);
$level_offset = 0;
$last_header_id = false;
$items = array('' => LANG_CONTENT_SELECT_CATEGORY);
if ($tree) {
foreach ($tree as $c) {
if ($ctype['options']['is_cats_only_last']) {
$dash_pad = $c['ns_level'] - 1 >= 0 ? str_repeat('-', $c['ns_level'] - 1) . ' ' : '';
if ($c['ns_right'] - $c['ns_left'] == 1) {
if ($last_header_id !== false && $last_header_id != $c['parent_id']) {
$items['opt' . $c['id']] = array(str_repeat('-', $c['ns_level'] - 1) . ' ' . $c['title']);
}
$items[$c['id']] = $dash_pad . $c['title'];
} else {
if ($c['parent_id'] > 0) {
$items['opt' . $c['id']] = array($dash_pad . $c['title']);
$last_header_id = $c['id'];
}
}
continue;
}
if (!$ctype['options']['is_cats_only_last']) {
if ($c['parent_id'] == 0 && !$ctype['options']['is_cats_open_root']) {
$level_offset = 1;
continue;
}
$items[$c['id']] = str_repeat('-- ', $c['ns_level'] - $level_offset) . ' ' . $c['title'];
continue;
}
}
}
return $items;
})));
if (cmsUser::isAllowed($ctype['name'], 'add_cat')) {
$form->addField($fieldset_id, new fieldString('new_category', array('title' => LANG_ADD_CATEGORY_QUICK)));
}
if (!empty($ctype['options']['is_cats_multi'])) {
$fieldset_id = $form->addFieldset(LANG_ADDITIONAL_CATEGORIES, 'multi_cats', array('is_empty' => true));
}
}
// Если включены личные папки, добавляем в форму поле выбора личной папки
if ($ctype['is_folders']) {
$fieldset_id = $form->addFieldset(LANG_FOLDER, 'folder');
$folders = array('0' => LANG_CONTENT_SELECT_FOLDER);
if ($folders_list) {
$folders = $folders + $folders_list;
}
$form->addField($fieldset_id, new fieldList('folder_id', array('items' => $folders)));
$form->addField($fieldset_id, new fieldString('new_folder', array('title' => LANG_ADD_FOLDER_QUICK)));
}
// Если есть поля-свойства, то добавляем область для них
if ($ctype['props']) {
$form->addFieldset('', 'props', array('is_empty' => true, 'class' => 'highlight'));
}
// Если этот контент можно создавать в группах (сообществах) то добавляем
// поле выбора группы
if ($action == 'add' && $groups_list && $groups_list != array('0' => '')) {
$fieldset_id = $form->addFieldset(LANG_GROUP);
$form->addField($fieldset_id, new fieldList('parent_id', array('items' => $groups_list)));
}
// Разбиваем поля по группам
$fieldsets = cmsForm::mapFieldsToFieldsets($fields, function ($field, $user) {
// пропускаем системные поля
if ($field['is_system']) {
return false;
}
// проверяем что группа пользователя имеет доступ к редактированию этого поля
if ($field['groups_edit'] && !$user->isInGroups($field['groups_edit'])) {
return false;
}
return true;
});
// Добавляем поля в форму
foreach ($fieldsets as $fieldset) {
$fieldset_id = $form->addFieldset($fieldset['title']);
foreach ($fieldset['fields'] as $field) {
// добавляем поле в форму
$form->addField($fieldset_id, $field['handler']);
}
}
//
// Если включены теги, то добавляем поле для них
//
if ($ctype['is_tags']) {
$fieldset_id = $form->addFieldset(LANG_TAGS);
//.........这里部分代码省略.........
示例2: run
public function run()
{
if (cmsUser::isLogged() && !cmsUser::isAdmin()) {
$this->redirectToHome();
}
$users_model = cmsCore::getModel('users');
$form = $this->getForm('registration');
//
// Добавляем поле для кода приглашения,
// если регистрация доступна только по приглашениям
//
if ($this->options['is_reg_invites']) {
$fieldset_id = $form->addFieldsetToBeginning(LANG_REG_INVITED_ONLY);
$form->addField($fieldset_id, new fieldString('inv', array('title' => LANG_REG_INVITE_CODE, 'rules' => array(array('required'), array('min_length', 10), array('max_length', 10)))));
}
//
// Добавляем поле выбора группы,
// при наличии публичных групп
//
$public_groups = $users_model->getPublicGroups();
if ($public_groups) {
$pb_items = array();
foreach ($public_groups as $pb) {
$pb_items[$pb['id']] = $pb['title'];
}
$form->addFieldToBeginning('basic', new fieldList('group_id', array('title' => LANG_USER_GROUP, 'items' => $pb_items)));
}
//
// Добавляем в форму обязательные поля профилей
//
$content_model = cmsCore::getModel('content');
$content_model->setTablePrefix('');
$content_model->orderBy('ordering');
$fields = $content_model->getRequiredContentFields('users');
// Разбиваем поля по группам
$fieldsets = cmsForm::mapFieldsToFieldsets($fields);
// Добавляем поля в форму
foreach ($fieldsets as $fieldset) {
$fieldset_id = $form->addFieldset($fieldset['title']);
foreach ($fieldset['fields'] as $field) {
if ($field['is_system']) {
continue;
}
$form->addField($fieldset_id, $field['handler']);
}
}
$user = array();
if ($this->request->hasInQuery('inv')) {
$user['inv'] = $this->request->get('inv');
}
$is_submitted = $this->request->has('submit');
if ($is_submitted) {
if (!$this->options['is_reg_enabled']) {
cmsCore::error404();
}
$errors = false;
$is_captcha_valid = true;
//
// Проверяем капчу
//
if ($this->options['reg_captcha']) {
$is_captcha_valid = cmsEventsManager::hook('captcha_validate', $this->request);
if (!$is_captcha_valid) {
$errors = true;
cmsUser::addSessionMessage(LANG_CAPTCHA_ERROR, 'error');
}
}
//
// Парсим и валидируем форму
//
if (!$errors) {
$user = $form->parse($this->request, $is_submitted);
$user['groups'] = array();
if (!empty($this->options['def_groups'])) {
$user['groups'] = $this->options['def_groups'];
}
if (isset($user['group_id'])) {
if (!in_array($user['group_id'], $user['groups'])) {
$user['groups'][] = $user['group_id'];
}
}
//
// убираем поля которые не относятся к выбранной пользователем группе
//
foreach ($fieldsets as $fieldset) {
foreach ($fieldset['fields'] as $field) {
if (!$field['groups_edit']) {
continue;
}
if (in_array(0, $field['groups_edit'])) {
continue;
}
if (!in_array($user['group_id'], $field['groups_edit'])) {
$form->disableField($field['name']);
unset($user[$field['name']]);
}
}
}
$errors = $form->validate($this, $user);
}
//.........这里部分代码省略.........
示例3: run
public function run($profile, $do = false)
{
if (!cmsUser::isLogged()) {
cmsCore::error404();
}
$user = cmsUser::getInstance();
// если нужно, передаем управление другому экшену
if ($do) {
$this->runAction('profile_edit_' . $do, array($profile) + array_slice($this->params, 2));
return;
}
// проверяем наличие доступа
if ($profile['id'] != $user->id && !$user->is_admin) {
cmsCore::error404();
}
// Получаем поля
$content_model = cmsCore::getModel('content');
$content_model->setTablePrefix('');
$content_model->orderBy('ordering');
$fields = $content_model->getContentFields('{users}');
// Строим форму
$form = new cmsForm();
// Разбиваем поля по группам
$fieldsets = cmsForm::mapFieldsToFieldsets($fields, function ($field, $user) {
// проверяем что группа пользователя имеет доступ к редактированию этого поля
if ($field['groups_edit'] && !$user->isInGroups($field['groups_edit'])) {
return false;
}
return true;
});
// Добавляем поля в форму
foreach ($fieldsets as $fieldset) {
$fieldset_id = $form->addFieldset($fieldset['title']);
foreach ($fieldset['fields'] as $field) {
// добавляем поле в форму
$form->addField($fieldset_id, $field['handler']);
}
}
// Добавляем поле выбора часового пояса
$config = cmsConfig::getInstance();
$fieldset_id = $form->addFieldset(LANG_TIME_ZONE);
$form->addField($fieldset_id, new fieldList('time_zone', array('default' => $config->time_zone, 'generator' => function ($item) {
return cmsCore::getTimeZones();
})));
// Форма отправлена?
$is_submitted = $this->request->has('submit');
if ($is_submitted) {
// Парсим форму и получаем поля записи
$new = $form->parse($this->request, $is_submitted, $profile);
$old = $profile;
$profile = array_merge($profile, $new);
// Проверям правильность заполнения
$errors = $form->validate($this, $profile);
if (!$errors) {
$is_allowed = cmsEventsManager::hookAll('user_profile_update', $profile, true);
if ($is_allowed !== true && in_array(false, $is_allowed)) {
$errors = true;
}
}
if (!$errors) {
// Обновляем профиль и редиректим на его просмотр
$this->model->updateUser($profile['id'], $profile);
// Отдельно обновляем часовой пояс в сессии
cmsUser::sessionSet('user_data:time_zone', $profile['time_zone']);
// Постим уведомление о смене аватара в ленту
if (!$this->model->isAvatarsEqual($new['avatar'], $old['avatar'])) {
$activity_controller = cmsCore::getController('activity');
$activity_controller->deleteEntry($this->name, "avatar", $profile['id']);
if (!empty($new['avatar'])) {
$activity_controller->addEntry($this->name, "avatar", array('user_id' => $profile['id'], 'subject_title' => $profile['nickname'], 'subject_id' => $profile['id'], 'subject_url' => href_to('users', $profile['id']), 'is_private' => 0, 'group_id' => null, 'images' => array(array('url' => href_to('users', $profile['id']), 'src' => html_image_src($new['avatar'], 'normal'))), 'images_count' => 1));
}
}
$this->redirectTo('users', $profile['id']);
}
if ($errors) {
cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
}
}
return cmsTemplate::getInstance()->render('profile_edit', array('do' => 'edit', 'id' => $profile['id'], 'profile' => $profile, 'form' => $form, 'errors' => isset($errors) ? $errors : false));
}
示例4: foreach
<div class="value"><?php
echo $field['html'];
?>
</div>
</div>
<?php
}
?>
<?php
if ($props && array_filter((array) $props_values)) {
?>
<?php
$props_fields = $this->controller->getPropsFields($props);
$props_fieldsets = cmsForm::mapFieldsToFieldsets($props);
?>
<div class="content_item_props <?php
echo $ctype['name'];
?>
_item_props">
<table>
<tbody>
<?php
foreach ($props_fieldsets as $fieldset) {
?>
<?php
if ($fieldset['title']) {
?>
<tr>
<td class="heading" colspan="2"><?php
示例5: function
?>
</ul>
</div>
</div>
<div id="right_column" class="column">
<div id="information" class="content_item block">
<?php
$fieldsets = cmsForm::mapFieldsToFieldsets($fields, function ($field, $user) {
if (in_array($field['name'], array('nickname', 'avatar'))) {
return false;
}
return true;
}, $profile);
?>
<?php
foreach ($fieldsets as $fieldset) {
?>
<?php
if (!$fieldset['fields']) {
continue;
}
?>
<div class="fieldset">