Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/06/2011, 04:28
Dav1d
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Problema al crear un formulario en Zend

Hola

Creo que el captcha no tiene nada que ver, el problema creo que es que el controller no encuentra la clase del archivo Contact.php, he probado cambiar el nombre de la clase en Contact.php para ver si la encuentra.
[PHP]
<?php
//application/forms/Contact.php
class Quick_Form_Contact extends Zend_Form
{
public function init ()
{
// initialize form
$this->setAction('/contact/index')->setMethod('post');
// create text input for name
$name = new Zend_Form_Element_Text('name');
$name->setLabel('Name:')
->setOptions(array('size' => '35'))
->setRequired(true)
->addValidator('NotEmpty', true)
->addValidator('Alpha', true)
->addFilter('HTMLEntities')
->addFilter('StringTrim');
// create text input for email address
$email = new Zend_Form_Element_Text('email');
$email->setLabel('Email address:');
$email->setOptions(array('size' => '50'))
->setRequired(true)
->addValidator('NotEmpty', true)
->addValidator('EmailAddress', true)
->addFilter('HTMLEntities')
->addFilter('StringToLower')
->addFilter('StringTrim');
// create text input for message body
$message = new Zend_Form_Element_Textarea('message');
$message->setLabel('Message:')
->setOptions(array('rows' => '8', 'cols' => '40'))
->setRequired(true)
->addValidator('NotEmpty', true)
->addFilter('HTMLEntities')
->addFilter('StringTrim');
// create captcha
$captcha = new Zend_Form_Element_Captcha('captcha',
array(
'captcha' => array('captcha' => 'Image', 'wordLen' => 6,
'timeout' => 300, 'width' => 300, 'height' => 100)));
$captcha->setLabel('Verification code:');
// create submit button
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Send Message')->setOptions(
array('class' => 'submit'));
// attach elements to form
$this->addElement($name)
->addElement($email)
->addElement($message)
->addElement($captcha)
->addElement($submit);
}
}

Y luego en ContactController.php llamo obviamente a la nueva clase
Código:
<?php
//application/modules/default/controllers/ContactControler.php
/**
 * ContactController
 * 
 * @author
 * @version 
 */
require_once 'Zend/Controller/Action.php';
class ContactController extends Zend_Controller_Action
{
    /**
     * The default action - show the home page
     */
    public function init ()
    {
    	
        $this->view->doctype('XHTML1_STRICT');
    }
    public function indexAction ()
    {
    	
        $form = new Quick_Form_Contact();
        $this->view->form = $form;
    if ($this->getRequest()->isPost()) {
            if ($form->isValid($this->getRequest()
                ->getPost())) {
                $values = $form->getValues();
                $mail = new Zend_Mail();
                $mail->setBodyText($values['message']);
                $mail->setFrom($values['email'], $values['name']);
                $mail->addTo('[email protected]');
                $mail->setSubject('Contact form submission');
                $mail->send();
                $this->_helper->getHelper('FlashMessenger')->addMessage(
                'Thank you. Your message was successfully
		sent.');
                $this->_redirect('/contact/success');
            }
        }
        
    }
}
Ahora el error es definitivo:

Código:
Fatal error: Class 'Quick_Form_Contact' not found in C:\xampp\htdocs\quickstart\application\modules\default\controllers\ContactController.php on line 22
Pues eso, algo debe fallar porque el código del formulario esta en Contact.php, pero parece no encontrarlo el controller, y parece como si la clase Application_Form_Contact() si sepa donde esta.