Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/06/2011, 12:36
Dav1d
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 19 años, 1 mes
Puntos: 1
Problema al crear un formulario en Zend

Hola

Estoy siguiendo un manual, para crear un formulario en Zend, y algún punto me he perdido que no me sale. Tengo instalado Zend y me funciona bien, con todos los directorios.

mi estructura es

quickstart
-aplication
--config
--layouts
--modules
---default
----controller
----models
----views
-----helpers
-----scripts

-docs
-library
-public

Hasta ahora todo funciona bien, pero voy con el formulario.

Creo en el directorio aplication, el directorio forms y dentro el archivo Contact.php, con este código según el manual:

Código PHP:
<?php
class Application_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);
    }
}
Luego dentro de la carpeta controller, creo el archivo ContactControler.php, con este código.
Código PHP:
<?php
/**
 * ConctactController
 * 
 * @author
 * @version 
 */
require_once 'Zend/Controller/Action.php';
class 
ConctactController extends Zend_Controller_Action
{
    
/**
     * The default action - show the home page
     */
    
public function init ()
    {
        
$this->view->doctype('XHTML1_STRICT');
    }
    public function 
indexAction ()
    {
        
$form = new Application_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');
            }
        }
    }
}
Despues dentro de la carpeta views/scripts, creo el directorio conctact, con dos archivos index.phtml y success.phtml, index tiene este código.
Código PHP:
<h2>Contact</h2>
<?php echo $this->form?>
Después seguiendo el manual en aplication.ini pongo esto.

Código:
resources.router.routes.contact.route = /contact
resources.router.routes.contact.defaults.module = default
resources.router.routes.contact.defaults.controller = contact
resources.router.routes.contact.defaults.action = index
pongo la url :
Código:
http://localhost/contact
y me da el siguiente error:

Código:
An error occurred
Page not found
Exception information:

Message: Invalid controller specified (contact)
Stack trace:

#0 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 C:\xampp\htdocs\quickstart\public\index.php(26): Zend_Application->run()
#4 {main}  

Request Parameters:

array (
  'module' => 'default',
  'controller' => 'contact',
  'action' => 'index',
)
A ver si alguien puede ayudarme con este problema.

Saludos