(je suis this post GOT la logique comment utiliser Zend_Form sans utiliser les décorateurs.)Zend_Form avec des scripts xhtml (sans l'aide de décorateurs)
au sein de l'action que je crée l'objet Zend_Form et affecté la forme à la vue avant de le restituer :
public function indexAction()
{
$form = new Zend_Form();
$form->setAction('process')
->setMethod('post');
$username = $form->createElement('text','username');
$username->addValidator('alnum')
->setRequired(true)
->addFilter('StringtoLower');
$description = $form->createElement('textarea','description');
$description->addValidator('alnum')
->setRequired(false)
->addFilter('StringtoLower');
$submit = $form->createElement('submit','Submit');
$form->addElement($username);
$form->addElement($description);
$form->addElement($submit);
$this->view->form = $form;
$this->view->render('myForm/index.phtml'); //myForm is the actionController
}
Puis-je ajouter le code suivant à son script de vue (de index.phtml)
<form>
<table>
<tr>
<td><label>Username</label></td>
<td><?php echo $this->form->getElement('username')->renderElement(); ?></td>
</tr>
<tr>
<td><label>Description</label></td>
<td><?php echo $this->form->getElement('description')->renderElement(); ?></td>
</tr>
<tr>
<td></td>
<td><?php echo $this->form->getElement('submit')->renderElement(); ?></td>
</tr>
</table>
</form>
Mais il est obtenir une erreur
Message: Décorateur par Nom de l'élément n'existe pas
Je ne pas utiliser les décorateurs, Quel est le problème de mon code.
Ceci est le message d'erreur personnalisé complet
Application error
Exception information:
Message: Decorator by name Element does not exist
Stack trace:
#0 [internal function]: Zend_Form_Element->__call('renderElement', Array)
#1 C:\Program Files\Zend\Apache2\htdocs\Demo1\application\views\scripts\myForm\index.phtml(5): Zend_Form_Element_Text->renderElement()
#2 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\View.php(108): include('C:\Program File...')
#3 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\View\Abstract.php(833): Zend_View->_run('C:\Program File...')
#4 C:\Program Files\Zend\Apache2\htdocs\Demo1\application\controllers\MyFormController.php(38): Zend_View_Abstract->render('myForm/index.p...')
#5 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\Controller\Action.php(513): myFormController->indexAction()
#6 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#7 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch()
#9 C:\Program Files\Zend\Apache2\htdocs\Demo1\library\Zend\Application.php(335): Zend_Application_Bootstrap_Bootstrap->run()
#10 C:\Program Files\Zend\Apache2\htdocs\Demo1\public\index.php(27): Zend_Application->run()
#11 {main}
Comment puis-je résoudre ce problème sans utiliser les décorateurs
droit. Lorsque vous ne définissez pas le décorateur ViewScript, il s'attend à ce que vous rendiez le formulaire en tant qu'un, pas en tant qu'éléments individuels. – jimyi
Je ne veux pas utiliser de décorateurs, c'est une utilisation trop compliquée. N'importe qui a une idée de cette erreur en utilisant cette façon. "Message: Décorateur par nom L'élément n'existe pas". J'ai utilisé le même script de vue (qui pour le contrôleur) pour le formulaire HTML. Est-ce qu'il cause une erreur? Merci d'avoir répondu – neobeacon
Et le sujet a une faute d'orthographe. Il doit être "Zend_Form avec des scripts xhtml" .Sorry – neobeacon