Внедрение формы в макет страницы
Отдельная публикация формы в макете сайта осуществляется с использованием метода показа 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/
05.07.2013 16:35:54надежда
Без темы
Адрес в параметре "action" формы должен вести на страницу с её обработчиком. В данном примере обработчик не рассматривается, но предусматривается что он есть и доступен по данному адресу.
Пример такого обработчика можно глянуть в типовой динамической странице "Отображение формы". А проще всего сразу использовать эту страницу для вывода формы.