Web
Analytics
Skip to content
Concrete5 на русском языке

Программный вывод Экспресс Формы

Выводить Экспресс Форму в пользовательском шаблоне или пользовательском  PHP коде - легко. Сначала, мы вызовем Экспресс объект, с которым мы хотим работать. Для этого возьмите Менеджер Экспресс объекта:

$express = \Core::make('express');

наверху PHP скрипта.

$entity = $express->getObjectByHandle('student');

Затем возьмите Экспресс форму:

$forms = $entity->getForms();
$form = $forms[0];

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

$forms = $entity->getForms();
foreach($forms as $expressForm) {
    if ($expressForm->getName() == 'Frontend') {
        $form = $expressForm;
        break;
    }
}

Теперь, у нас есть объект класса  Concrete\Core\Entity\Express\Form в переменной $form. Затем, вызовите контроллер Экспресс сущности:

$controller = $express->getEntityController($entity);

Потом, мы назначаем объект для контекста, который мы применим для вывода формы. Поскольку мы выводим форму на пользовательских страницах сайта, давайте создадим экземпляр объекта класса  Concrete\Core\Express\Form\Context\FrontendFormContext.

$context = new FrontendFormContext();

Наконец, давайте создадим установщик дающий нам контроллер и контекст. Импортируйте класс  Concrete\Core\Express\Form\Renderer в верхнюю часть скрипта:

use Concrete\Core\Express\Form\Renderer;

И создайте его экземпляр с контекстом и объектом формы:

$renderer = new Renderer($context, $form);

Теперь вы можете вывести форму так:

print $renderer->render();

Встроенная контекстная ссылка

Для вывода экспресс форм в ядре существуют следующие объекты контекста.

  • Concrete\Core\Express\Form\Context\DashboardFormContext
  • Concrete\Core\Express\Form\Context\DashboardViewContext
  • Concrete\Core\Express\Form\Context\FormContext.php
  • Concrete\Core\Express\Form\Context\FrontendFormContext
  • Concrete\Core\Express\Form\Context\FrontendViewContext
  • Concrete\Core\Express\Form\Context\ViewContext

В общем случае, если вы выводите форму в панели управления (Dashboard), используйте контекст формы панели управления Dashboard; если вы выводите на пользовательских страницах ( front-end), используйте FrontendFormContext. То же самое подходит и для вывода видов (views), которые показывают значения формы, но в статусе только чтения.

Динамичный вызов подходящего Контекста

В примере выше, мы передали объект Concrete\Core\Express\Form\Context\FrontendFormContext проводнику формы. Тем не менее, можно динамически передавать объекты пользовательского контекста, которые вы определили реализации concrete5. Это делает его возможным для доставки пользовательского объектного контекста в любое время, когда  concrete5 вызывает свой внутренний FrontendFormContext, например. Это сделано с использованием комбинации контроллера Экспресс Формы и объекта  Concrete\Core\Express\Form\Context\ContextFactory, и включает полный контроль над настройкой форм без использования пользовательских шаблонов.  Читайте далее.

Загрузка беседы