Доброго времени суток.
Через форму во фронтэнде создаем ресурс с помощью снипета. Но в нем только работает ввод данных в стандартные поля ресурса. Как сделать так, чтобы можно было вводить данные в определенные tv?
Это не публичный сайт, создан для совместной работы надо документами, при том что будут вводить данные только конкретные люди, знающие что вводят и разрешенным доступом. Поэтому нужен простой но работающий способ.
Сниппет
// Сниппет будет получать данные из формы методом POST
$pagetitle = $_POST['pagetitle'];
$longtitle = $_POST['longtitle'];
$menutitle = $_POST['menutitle'];
$link_attributes = $_POST['link_attributes'];
$description = $_POST['description'];
$introtext = $_POST['introtext'];
$content = $_POST['content'];
$parent = $_POST['parent'];
$template = $_POST['template'];
$publishedon = date('Y-m-d H:i:s');
// Если некоторые значения не будут указаны,
// они будут установлены по умолчанию
if (!$introtext) $introtext = $pagetitle;
if (!$description) $description = $introtext;
if (!$parent) $parent = 1;
if (!$template) $template = 1;
// Создаем ресурс
$newResource = $modx->newObject('modResource');
// Заполняем нужные значения
$newResource->set('pagetitle',$pagetitle);
$newResource->set('longtitle',$longtitle);
$newResource->set('menutitle',$menutitle);
$newResource->set('link_attributes',$link_attributes);
$newResource->set('description',$description);
$newResource->set('introtext',$introtext);
$newResource->set('content',$content);
$newResource->set('alias',$pagetitle);
$newResource->set('template',$template);
$newResource->set('published',1);
$newResource->set('parent',$parent);
$newResource->set('publishedon',$publishedon);
// Сохраняем ресурс
if ($newResource->save()) {
// Очищаем кеш, чтобы изменения были видны сразу
$modx->cacheManager->clearCache();
return true;
}
Форма
[[!FormIt?
&hooks=`addResource,redirect`
&validate=`pagetitle:required`
&redirectTo=`[[*id]]`
]]
<form action="[[~[[*id]]]]" method="post" class="form">
<!-- Если нам нужно указать особенный шаблон, в форме передаем значение -->
<input type="hidden" name="template" id="template" value="3" />
<input type="hidden" name="parent" id="parent" value="[[*id]]" />
<input type="hidden" name="description" id="description" value="персона"/><br />
<!--
&hooks - то, что будет выполняться при отправке формы.
В данном случае, это сниппет addResource и перенаправление
на страницу с сообщением об успехе.
&validate - проверка значений формы.
У нас title обязательно должен быть заполнен.
&redirectTo - id ресурса, на который будет перенаправляться пользователь,
если сниппет addResource вернет true.
-->
<input class="form-control" type="text" placeholder="Имя" name="pagetitle" id="pagetitle"/>
<input class="form-control" type="text" placeholder="Отчество" name="longtitle" id="longtitle"/>
<input class="form-control" type="text" placeholder="Фамилия" name="menutitle" id="menutitle"/>
....
<button type="submit" class="btn btn-primary" >Добавить</button>