Отдельная публикация формы в макете сайта осуществляется с использованием метода показа show()
контроллера показа формы Form_Controller_Show
.
Контроллер принимает экземпляр класса Form_Model
в качестве параметра и настройки показа через свои методы:
xsl()
— принимает XSL-шаблон через модель Xsl_Model
.<?php if (Core::moduleIsActive('form')) { $Form_Controller_Show = new Form_Controller_Show( Core_Entity::factory('Form', 1) ); $Form_Controller_Show ->xsl( Core_Entity::factory('Xsl')->getByName('ОтобразитьФорму') ) ->show(); } ?>
Клонируем текущий XSL-шаблон показа формы и вносим небольшое изменение.
Вместо:
<form name="form{@id}" id="form{@id}" class="validate" action="./" method="post" enctype="multipart/form-data">
Указываем явно путь к странице, на которой расположена форма с обработчиком, например /feedback/.
<form name="form{@id}" id="form{@id}" class="validate" action="/feedback/" method="post" enctype="multipart/form-data">
Пример внедрения формы в макет вместе с обработкой отправки формы:
<?php $oForm = Core_Entity::factory('Form', 1); $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(0) ->mailXsl( Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормы') ) ->mailFromFieldName('email') ->process(); } $Form_Controller_Show ->xsl( Core_Entity::factory('Xsl')->getByName('ОтобразитьФорму') ) ->show(); ?>
добрый день. делаю все как описано в руководстве. форма отображается, но письма не отправляются. после нажатия кнопки "отправить" страница обновляется, но сообщение об отправке или ошибках не выводит, просто снова форма обратной связи отображается http://gorodnn.com/faq/
Адрес в параметре "action" формы должен вести на страницу с её обработчиком. В данном примере обработчик не рассматривается, но предусматривается что он есть и доступен по данному адресу.
Пример такого обработчика можно глянуть в типовой динамической странице "Отображение формы". А проще всего сразу использовать эту страницу для вывода формы.