Я разрабатываю веб-приложение с использованием Zend, и у меня закончились идеи для проблемы, с которой я столкнулся. В двух словах, я пытаюсь создать контактную форму во всплывающем окне (Fancybox, lightbox, colorbox или что-то еще...). Все работает отлично, в том смысле, что он отображает контактную форму во всплывающем окне и позволяет отправлять электронные письма. Однако всякий раз, когда возникают ошибки (незаполненный ввод или неправильное заполнение), я не мог отобразить эти ошибки во всплывающем окне (на самом деле он перенаправляет меня обратно к форме в обычном отображении (просмотр+макет), чтобы показать ошибки .
Возможно, это возможно, но теперь я подумал, что, возможно, мне будет проще вывести свое сообщение об ошибке в новое всплывающее окно (страница контактов, заполненная неправильно, приведет к всплывающей странице с ошибкой...). Я думаю, что эта альтернатива может выглядеть круто, но у меня большие проблемы с ее выполнением. Теперь мой настоящий вопрос: можем ли мы действительно создать форму во всплывающем окне, используя Facybox (Lighbox или любой другой на самом деле ... просто хочу мое всплывающее окно) и Zend? Есть Гуру снаружи?? Спасибо большое вот код:
ссылка например:
<a class="popLink" href=" <?php echo $this->url(array('module'=>'default', 'controller'=>'contact', 'action'=>'sendmail')).'?ProID='.$this->proProfil->getProID(); ?>">Contact</a>
Действие:
public function sendmailAction()
{
$this->_helper->layout()->setLayout('blank');
$request = $this->getRequest();
$proID = $this->_getParam("ProID");
$professionalsList = new Model_DirPro();
$proName = $professionalsList->getProInfo($proID);
$translate = Zend_Registry::get('translate');
Zend_Validate_Abstract::setDefaultTranslator($translate);
Zend_Form::setDefaultTranslator($translate);
$contactform = new Form_ContactForm();
$contactform->setTranslator($translate);
$contactform->setAttrib('id', 'contact');
$this->view->contactform = $contactform;
$this->view->proName = $proName;
if ($request->isPost()){
if ($contactform->isValid($this->_getAllParams())){
$mailSubject = $contactform->getValue('mailsubject');
if ($contactform->mailattcht->isUploaded()) {
$contactform->mailattcht->receive();
//etc....
форма:
class Form_ContactForm extends Zend_Form
{
public function init ()
{
$this->setName("email");
$this->setMethod('post');
$this->addElement('text', 'mailsubject',
array('filters' => array('StringTrim'),
'validators' => array(), 'required' => true, 'label' => 'Subject:'));
$mailattcht = new Zend_Form_Element_File('mailattcht');
$mailattcht->setLabel('Attach File:')->setDestination(APPLICATION_PATH.'/../public/mails');
$mailattcht->addValidator('Count', false, 1);
$mailattcht->addValidator('Size', false, 8000000);
$mailattcht->addValidator('Extension', false,
'jpg,png,gif,ppt,pptx,doc,docx,xls,xslx,pdf');
$this->addElement($mailattcht, 'mailattcht');
$this->addElement('textarea', 'mailbody',
array('filters' => array('StringTrim'),
'validators' => array(), 'required' => true, 'label' => 'Body:'));
$this->addElement('submit', 'send',
array('required' => false, 'ignore' => true, 'label' => 'Send'));
$this->addElement('hidden', 'return', array(
'value' => Zend_Controller_Front::getInstance()->getRequest()->getRequestUri(),
));
$this->setAttrib('enctype', 'multipart/form-data');
}
}