Bu sayfa kullanıcı girişi kabul ve yönetici bir e-posta gönderdi, sonra tekrar sayfaya dönmek denir hangi dizin gibi sayfaların çoğu denir projemde bir ortak 'İletişim Formu', hakkımızda vs var
Iletişim formu için Code
class Form_Contactus extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$this->setAction('contactus/index');
$frontController = Zend_Controller_Front::getInstance();
$pageName = $this->createElement('hidden','pageName');
$pageName->setValue( $frontController->getRequest()->getControllerName() );
$FullName = $this->createElement('text','FullName');
$FullName->setLabel('Full Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Email = $this->createElement('text','Email');
$Email->setLabel('Email')
->setRequired(true)
->addFilter('StringTrim')
->addValidator('EmailAddress')
->addValidator('NotEmpty');
$Message = $this->createElement('textarea','Message');
$Message->setLabel('Message')
->setAttribs( array('rows' => 3, 'cols' => 20 ))
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = $this->createElement('submit','submit');
$submit->setLabel('Submit')
->setIgnore(true);
$this->addElements(array( $pageName,
$FullName,
$Email,
$Message,
$submit, )
);
}
}
Lütfen dikkat, çizgi $ this-> setAction ('bizeulaşın / dizin');. Ben (not bu yaygın bir şeklidir) indeks sayfasından, bu 'bizeulaşın controller' index eylemine geçerken bu formu doldurunuz eğer benim fikir olduğunu. Oradan bir mail gönderdi ve geri indeks sayfasına dönün. Sayfa hakkımızda sayfasından dolu ise, bu bizimle ilgili sayfasına geri dönün.
Bu kod ile vb hakkında indeksi gibi farklı sayfalarda, dahil
$conForm = new Form_Contactus();
echo $conForm;
Ve denetleyici kod gibi gibi görünüyor
class ContactusController extends Zend_Controller_Action
{
protected $_redirector = null;
public function init()
{
$registry = Zend_Registry::getInstance();
$this->msgObj = $registry['MessageHandler'];
}
public function indexAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$form = new Form_Contactus();
if ($this->_request->isPost()) {
$formData = $this->_request->getPost();
if ($form->isValid($formData)) {
$pageName = $formData['pageName'];
$FullName = $formData['FullName'];
$Email = $formData['Email'];
$Message = $formData['Message'];
if( strlen(trim( $FullName) ) ){
$mailBody .= "Name:\r\n\t".$FullName ."\r\n\r\n";
$mailBody .= "Email:\r\n\t".$Email ."\r\n\r\n";
$mailBody .= "Message:\r\n\t".$Message ."\r\n\r\n";
$mail = new Zend_Mail();
$transport = new Zend_Mail_Transport_Smtp('localhost');
Zend_Mail::setDefaultTransport($transport);
$mail->setSubject('Contact Enquiry.');
$mail->setFrom($Email, $FullName);
$mail->addTo(CONTACT_ADMIN_EMAIL, CONTACT_ADMIN_NAME);
$mail->setBodyText($mailBody);
if( $mail->send() ){
$this->msgObj->addMessage('Thank you!');
$this->msgObj->addMessage('Your message has been received and will be reviewed within 72 hours.');
}
else{
$this->msgObj->addError('Unable to sent mail! Please try later.');
}
}
}
else {
$this->msgObj->addError('Please correct the following:!');
$form->populate($formData);
$pageName = 'index';
}
}
$this->view->form = $form;
$this->_helper->redirector('index', $pageName);
}
}
Her şey gayet iyi çalışıyor ve ben formu geçerliliği dışında bu formu doldurmanız halinde posta gitti. Örneğin posta gerekli bir alan olan 'FullName' olmadan gönderilen olabilir
başka bir sorun'' 'gibi mesajlar teşekkür ederiz görüntülemek için değiştiremiyor.
Bu olabilir çünkü $ this-> _helper-> Ben kullanılan yönlendirici yöntemi. Form yönlendirilen ve bu nedenle değerleri kaybolur. I $this->_helper->forwarded
kullanın veya $this_forward()
o da işe yaramazsa.
Herhangi biri bana düzgün doğrulama iletisi ve diğer mesajları dipsply için bir yöntem önermek misiniz? Benim kötü İngilizce ve peşin teşekkür için özür dilerim