Отображение формы на странице

#
Отображение формы на странице
Здравствуйте, подскажите по проблеме!

Создал форму, поля. В структуре создал раздел для формы, где указаны шаблоны для отправки, отображения и поле отвечающее за емайл юзера. Все работает чудесно. Но как быть, если я форму хочу встроить в какую нибудь страницу. Например на странице контактов компании, есть информация с номерами телефонов, есть яндекс карта и вод этим всем я хочу разместить форму обратной связи?

Реализация понятна, создаем макет в который пишем вывод контента, пишем код выводы карты яндекса и пишем вызов формы (в данном случае у нее id=2)

<?php

$Form_Controller_Show = new Form_Controller_Show(
    Core_Entity::factory('Form', 2)
);

$Form_Controller_Show
    ->xsl(
        Core_Entity::factory('Xsl')->getByName('ОтобразитьФорму')
    )
    ->show();

?>


Отображается замечательно но ничего не отправляет. Просто перезагружает страницу.

Что я пропустил и что я делаю не правильно?
#
Re: Отображение формы на странице
digital7,
action должен вести на ту страницу где обработчик формы (нужно править в шаблоне, если это не сдлеано) там по дефолту стоит action="." или отправлять ajax запрос чтобы без перезагрузки на ту страницу где обработчик, а если это у вас контакты, то думаю привзять страницу контактов не к "Страницы и документы" а к динамической старнице Формы и там уже вставить в описание всю инфу про адрес и карту
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Отображение формы на странице
макет создавать не обязательно, можно создать узел структуры типа "динамическая страница", и вставить все коды туда, в том числе вывод нужной страницы из страниц и документов
кроме вывода формы нужно добавить и ее обработчик (пример кода в типовой динамической странице "Формы" )

   $oForm = Core_Entity::factory('Form', 2);

   $Form_Controller_Show = new Form_Controller_Show($oForm);

   if (!is_null(Core_Array::getPost($oForm->button_name)))
   {
      $Form_Controller_Show
         ->values($_POST + $_FILES)
         // 0 - html, 1- plain text
         ->mailType(1)
         ->mailXsl(
            Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормы')
         )
         ->mailFromFieldName('mail@site.ru')
         ->process();
   }

   $Form_Controller_Show
      ->xsl(
         Core_Entity::factory('Xsl')->getByName('ОтобразитьФорму')
      )
      ->show();

#
Re: Отображение формы на странице
Вот! Спасибо большое люди добрые что откликнулись! в ТДС то я и не догадался посмотреть)))

только

->mailFromFieldName('mail@site.ru')


тут нужно указывать не емайл а имя поле отвечающее за емайл пользователя заполняющего форму
#
Re: Отображение формы на странице
Вот так надо действовать - это PHP-код шорткода:
$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();

Теперь в любом месте (тексте) такой код [form id="7" xsl="ОтобразитьФорму"] и всё отлично работает!
#
Re: Отображение формы на странице
Здравствуйте. А как реализовать ajax проверку и отправку данной формы?
Авторизация