Шорткод form (Форма обратной связи)

#
Re: Шорткод form (Форма обратной связи)
Неверный ID писáл.
#
Re: Шорткод form (Форма обратной связи)
Всё оказалось не так просто...
Вот код:
$args += array(
   'id' => 7,
   'xsl' => 'ОтобразитьФорму',
);
ob_start();
if (Core::moduleIsActive('form')) {
   $oForm = Core_Entity::factory('Form', $args['id']);
   $Form_Controller_Show = new Form_Controller_Show(Core_Entity::factory('Form', $args['id']));
   $Form_Controller_Show
      ->xsl( Core_Entity::factory('Xsl')->getByName($args['xsl']))
      ->show();
}
return ob_get_clean();
return $content;

Форма выводится, заполняется, но письма не приходят.
А кстати, для чего вот это
return $content;
?
То есть форма выведенная обычным способом работает - https://www.mebelib.ru/company/
Страница обновляется и выводит сообщение: Спасибо! Мы ответим Вам в ближайшее время
А форма, которая выводится через шорткод, не срабатывает - сообщение-уведомление не показывается и письмо не приходит.
https://www.mebelib.ru/company/contacts/
#
Re: Шорткод form (Форма обратной связи)
Цитата:
Форма выводится, заполняется, но письма не приходят.>

Вероятно вы отправляете форму на страницу где нет ее обработки. Пример показа формы с обработкой можно увидеть в документации https://www.hostcms.ru/documentation/modules/form/frontend/controllers/

Цитата:
А кстати, для чего вот это

Это ваш код, мы не знаем что это.
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Шорткод form (Форма обратной связи)
В примере Пример внедрения формы в макет вместе с обработкой отправки формы
видимо ошибка какая-то. Там одна открывающаяся фигурная скобка и две закрывающихся фигурные скобки.
#
Re: Шорткод form (Форма обратной связи)
Dmitry K.,
последняя закрывающаяся скобка не нужна
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Шорткод form (Форма обратной связи)
В примере внедрения формы в макет вместе с обработкой отправки формы https://www.hostcms.ru/documentation/modules/form/frontend/controllers/.
Я изменил ID формы на свой... Код получился такой:
<?php
$oForm = Core_Entity::factory('Form', 7);
$Form_Controller_Show = new Form_Controller_Show($oForm);
if (!is_null(Core_Array::getPost($oForm->button_name))) {
   $Form_Controller_Show
      ->values($_POST + $_FILES)
      ->mailType(1) // 0 - html, 1 - plain text
      ->mailXsl(Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормы'))
      ->mailFromFieldName('email')
      ->process();
}
$Form_Controller_Show
   ->xsl(Core_Entity::factory('Xsl')->getByName('ОтобразитьФорму'))
   ->show();
?>

Но он вообще не отображается, а компьютер выдаёт ошибку: Exception: syntax error, unexpected '<'
Зато код
   $args += array(
      'id' => 7,
      'xsl' => 'ОтобразитьФорму',
   );
   ob_start();
   if (Core::moduleIsActive('form')) {
      $oForm = Core_Entity::factory('Form', $args['id']);
      $Form_Controller_Show = new Form_Controller_Show(Core_Entity::factory('Form', $args['id']));
      $Form_Controller_Show
         ->xsl( Core_Entity::factory('Xsl')->getByName($args['xsl']))
         ->show();
   }
   return ob_get_clean();
   return $content;

полностью отображает форму через шорткод, но не отправляет её.
#
Re: Шорткод form (Форма обратной связи)

   $args += array(
      'id' => 7,
      'xsl' => 'ОтобразитьФорму',
   );
   ob_start();
   if (Core::moduleIsActive('form')) {
      $oForm = Core_Entity::factory('Form', $args['id']);
      $Form_Controller_Show = new Form_Controller_Show($oForm);

      
      // код отвечающий за отправку формы
      if (!is_null(Core_Array::getPost($oForm->button_name))) {
           $Form_Controller_Show
                  ->values($_POST + $_FILES)
                  ->mailType(1) // 0 - html, 1 - plain text
                  ->mailXsl(Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормы'))
                  ->mailFromFieldName('email')
                  ->process();
      }


      $Form_Controller_Show
         ->xsl( Core_Entity::factory('Xsl')->getByName($args['xsl']))
         ->show();
   }
   return ob_get_clean();

HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Шорткод form (Форма обратной связи)
EugenyP, Вы - гений!
Код работает.
$args += array(
   'id' => 7,
   'xsl' => 'ОтобразитьФорму',
   );
ob_start();
if (Core::moduleIsActive('form')) {
   $oForm = Core_Entity::factory('Form', $args['id']);
   $Form_Controller_Show = new Form_Controller_Show($oForm);
   if (!is_null(Core_Array::getPost($oForm->button_name))) {
      $Form_Controller_Show
         ->values($_POST + $_FILES)
                  ->mailType(1) // 0 - html, 1 - обычный текст
                  ->mailXsl(Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормы'))
                  ->mailFromFieldName('email')
                  ->process();
   }
   $Form_Controller_Show
      ->xsl( Core_Entity::factory('Xsl')->getByName($args['xsl']))
      ->show();
   }
return ob_get_clean();

Сейчас буду думать над тем, как сделать так, чтобы отправленные сообщения возвращались к прежней форме,
то есть появляющаяся надпись Спасибо! Мы ответим Вам в ближайшее время, побыла перед глазами 3-5 секунд,
хлоп и обратно к форме...
#
Re: Шорткод form (Форма обратной связи)
А вот ещё вопросик.
В XSL-шаблоне есть такое:
<xsl:attribute name="title">Заполните поле – <xsl:value-of select="caption" /></xsl:attribute>

Это вывод подсказки при наведении на поле формы.
И она всплывает каждый раз при наведении, заполнено поле или нет - без разницы.
А как написать, чтобы эта подсказка всплывала только тогда, когда поле формы не заполнено.
#
Re: Шорткод form (Форма обратной связи)
EugenyP, добрый день.
Не подскажете ли направление решение проблемы описанной на форуме
https://www.hostcms.ru/forums/3/12161/
Или такое только за деньги?
Авторизация