Web
Analytics
Skip to content

Concrete5

на русском языке

Пользовательский шаблон Экспресс Формы

Прежде чем мы погрузимся в проблему вывода атрибутов, описанных во введении, давайте поговорим о том, что возможно сделать просто создавая пользовательский шаблон для блока Экспресс Формы. Шаблон вывода блока Экспресс Формы содержит следующую разметку :

<?php defined('C5_EXECUTE') or die("Access Denied."); ?>
<div class="ccm-block-express-form">
    <?php if (isset($renderer)) { ?>
        <div class="ccm-form">
            <a name="form<?=$bID?>"></a>

            <?php if (isset($success)) { ?>
                <div class="alert alert-success">
                    <?=$success?>
                </div>
            <?php } ?>

            <?php if (isset($error) && is_object($error)) { ?>
                <div class="alert alert-danger">
                    <?=$error->output()?>
                </div>
            <?php } ?>


            <form enctype="multipart/form-data" class="form-stacked" 
                 method="post" action="<?=$view->action('submit')?>#form<?=$bID?>">
            <?php
            print $renderer->render();

            if ($displayCaptcha) {
                $captcha = \Core::make('helper/validation/captcha');
                ?>
                <div class="form-group captcha">
                    <?php
                    $captchaLabel = $captcha->label();
                    if (!empty($captchaLabel)) {
                        ?>
                        <label class="control-label">
                            <?php echo $captchaLabel;?>
                        </label>
                        <?php

                    }
                    ?>
                    <div><?php  $captcha->display(); ?></div>
                    <div><?php  $captcha->showInput(); ?></div>
                </div>
            <?php } ?>

            <div class="form-actions">
                <button type="submit" name="Submit" 
                   class="btn btn-primary"><?=t($submitLabel)?>
                </button>
            </div>

            </form>

        </div>
    <?php } else { ?>
        <p><?=t('This form is unavailable.')?></p>
    <?php } ?>
</div>

Давайте пройдемся по этому шаблону. 

Объект $renderer берётся из контроллера блока формы. Это экземпляр объекта из класса Concrete\Core\Express\Form\Renderer. Как вы можете видеть по способу работы этого класса в шаблоне, будет очень тяжело настроить его вывод, работая с пользовательским шаблоном блока - потому что вся логика вывода формы включена в строку  $renderer->render();

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

  • Разметка успешных сообщений
  • Разметка сообщений об ошибках.
  • Разметка капчи
  • Любая разметка до и после самой формы
  • Разметка, содержащая форму
  • Кнопка submit.

Тем не менее, если вам нужно настроить сами элементы формы ( и судя по нашему примеру, мы будем это делать - наши пользовательские стили плохо поддерживают разметку bootstrap ) – мы должны копать глубже, создавая новый пользовательский объект контекста, который скажет Экспрессу, откуда загружать наш шаблон формы. Чтобы лучше понять как писать пользовательский контекст объекта, давайте посмотрим, как программно выводится экспресс форма, и как этот вывод работает. 

Загрузка беседы
Также как и одиночные страницы, типы страниц могут также иметь контроллер. Метод view() для контроллера типа страницы автоматически будет работать, когда страница будет просматриваться на сайте.
Как повысить репутацию сайта на 25% с помощью ссылок на другие ресурсы.