#
Form Draft
1.0.7+ | 1.1.2+
#
Базовое использование
#
Пример шаблона:
<xf:comment>Подключение JavaScript ниже требуется только для версий XenForo до 2.3.0</xf:comment>
<xf:js src="TC/ComponentLibrary/form.js" addon="TC/ComponentLibrary" min="1" />
<xf:form class="block"
data-xf-init="tc-form-draft"
data-draft-save-url="{{ link('demo/form-draft/save') }}"
data-draft-load-url="{{ link('demo/form-draft/load') }}">
<div class="block-container">
<div class="block-body">
<xf:textboxrow label="Test 1"
name="test1" />
<xf:textboxrow label="Test 2"
name="test2" />
<xf:textboxrow label="Test 3"
name="test3" />
</div>
<xf:submitrow icon="save">
<xf:html>
<xf:macro id="tc_clib_form_draft_macros::controls"
arg-menuHref="{{ link('demo/form-draft/menu') }}" />
</xf:html>
</xf:submitrow>
</div>
</xf:form>
#
Пример контроллера:
<?php
namespace MV\Playground\Pub\Controller;
use TC\ComponentLibrary\ControllerPlugin\FormDraft;
use XF\Mvc\Reply\AbstractReply;
use XF\Pub\Controller\AbstractController;
class Demo extends AbstractController
{
public function actionIndex(): AbstractReply
{
return $this->view(
'Vendor\AddOn:Demo\FormInputs',
'demo_form'
);
}
public function actionFormDraftMenu(): AbstractReply
{
/** @var FormDraft $formDraftPlugin */
$formDraftPlugin = $this->plugin('TC\ComponentLibrary:FormDraft');
return $formDraftPlugin->actionMenu('demo');
}
public function actionFormDraftLoad(): AbstractReply
{
/** @var FormDraft $formDraftPlugin */
$formDraftPlugin = $this->plugin('TC\ComponentLibrary:FormDraft');
return $formDraftPlugin->actionLoad('demo');
}
public function actionFormDraftSave(): AbstractReply
{
/** @var FormDraft $formDraftPlugin */
$formDraftPlugin = $this->plugin('TC\ComponentLibrary:FormDraft');
return $formDraftPlugin->actionSave('demo');
}
}
#
TC\ComponentLibrary\ControllerPlugin\FormDraft
#
actionMenu
Возвращает ответ с содержимым меню, содержащим список черновиков пользователя для указанной формы.
public function actionMenu(string $formKey, string $draftEntity = null, string $viewClass = null, string $template = null, array $params = []): AbstractReply
#
Параметры
#
actionLoad
Возвращает ответ в формате JSON с объектом, содержащим значения сущности $draftEntity c идентификатором из
параметра draft_id.
public function actionLoad(string $formKey, string $draftEntity = null): AbstractReply
#
actionSave
Обновляет столбцы title и draft_data сущности $draftEntity c идентификатором из параметра draft_id значениями из
одноименных параметров. При наличии параметра delete со значением равным true сущность удаляется.
После сохранения возвращается ответ в формате JSON с объектом, содержащим значения обновленной сущности $draftEntity.
После удаления возвращается только идентификатор удаленной сущности.
public function actionSave(string $formKey, string $draftEntity = null): AbstractReply
#
Смотрите также
JavaScript / Form / Form Draft.