Как вывести текст после отправки формы?

Для вывода текста после отправки формы в Yii, вы можете использовать различные подходы, в зависимости от ваших потребностей. Вот несколько наиболее распространенных способов:

  1. Использование метода setFlash() и yiibootstrapAlert:
  • В контроллере, который обрабатывает вашу форму, вы можете добавить следующий код:
    Yii::$app->session->setFlash('success', 'Текст, который вы хотите вывести после отправки формы');
  • В представлении, где вы отображаете результат отправки формы, можете использовать следующий код:
    <?php if (Yii::$app->session->hasFlash('success')): ?>
        <?= yiibootstrapAlert::widget([
            'options' => ['class' => 'alert-success'],
            'body' => Yii::$app->session->getFlash('success'),
        ]) ?>
    <?php endif; ?>
  • Этот код добавляет класс alert-success к блоку с сообщением для создания зеленого фона.
  1. Использование метода renderPartial() для отображения контента внутри представления:
  • В контроллере, который обрабатывает вашу форму, вам необходимо установить свойство layout равным false, чтобы представление не использовало общую обертку:
    public $layout = false;
  • Затем, после обработки формы, вы можете добавить следующий код для отображения сообщения:
    return $this->renderPartial('имя_представления', ['message' => 'Ваше сообщение']);
  • В представлении имя_представления вы можете отобразить сообщение, используя переданные данные:
    <div class="alert alert-success"><?= $message ?></div>
  1. Использование AJAX-запросов и обновление содержимого элемента на странице:
  • В вашем представлении, где находится форма, добавьте следующий скрипт для обработки события отправки формы:
    $('#form-id').on('submit', function(event) {
        event.preventDefault(); // Отменить стандартное отправление формы
        $.ajax({
            url: $(this).attr('action'),
            type: 'POST',
            data: $(this).serialize(),
            success: function(response) {
                $('#result').html(response); // Обновит содержимое элемента с id "result"
            }
        });
    });
  • В контроллере, который обрабатывает вашу форму, вы можете добавить следующий код:
    if(Yii::$app->request->isAjax) {
        echo 'Текст, который вы хотите вывести после отправки формы';
        Yii::$app->end();
    }
  • В представлении, вы можете добавить элемент с id "result", где будет отображаться результат отправки формы:
    <div id="result"></div>

Каждый из этих подходов имеет свои преимущества и можно выбрать наиболее подходящий вариант, основываясь на требованиях вашего проекта.