2009-10-05 9 views
1

Comment puis-je ajouter un formulaire à mon layout.phtml? Je voudrais être en mesure d'avoir un formulaire de recherche et un formulaire de connexion qui persiste dans tous les formulaires de mon site.Site wide Zend_Form

+0

ma réponse a-t-elle aidé? – Andrew

Répondre

7

J'ai un billet de blog expliquant ceci: http://blog.zero7ict.com/2009/11/how-to-create-reusable-form-zend-framework-zend_form-validation-filters/

Dans votre dossier Application créer un dossier Forms

Ceci est un exemple de formulaire:

<?php 
class Form_CreateEmail extends Zend_Form 
{ 
public function __construct($options = null) 
{ 
    parent::__construct($options); 

    $this->setName('createemail'); 
    $title = new Zend_Form_Element_Text('title'); 
    $title->setLabel('Subject') 
    ->setRequired(true) 
    ->addFilter('StripTags') 
    ->addFilter('StringTrim') 
    ->addValidator('NotEmpty'); 
    $info = new Zend_Form_Element_Textarea('info'); 
    $info->setLabel('Email Content') 
    ->setAttribs(array('rows' => 12, 'cols' => 79)); 
    $submit = new Zend_Form_Element_Submit('submit'); 
    $submit->setAttrib('id', 'submitbutton'); 
    $this->addElements(array($title, $info, $submit)); 
} 

} 
?> 

Vous pouvez ensuite appeler à partir de votre contrôleur comme ceci:

$form = new Form_CreateEmail(); 
     $form->submit->setLabel('Add'); 
     $this->view->form = $form; 

Et l'afficher fro m vous voir en utilisant

echo $this->form; 

Hope this helps.

Edit: si vous voulez que cela soit inclus sur everypage vous pouvez créer un nouveau fichier d'aide

dans vos vues dossier créer un dossier helpers et créer un fichier loginHelper.php

class Zend_View_Helper_LoginHelper 
{ 
    function loginHelper() 
    { 

$form = new Form_CreateEmail(); 
     $form->submit->setLabel('Add'); 
     return = $form; 

    } 
} 

Cela pourrait être sorti de votre mise en page en utilisant:

<?php echo $this->LoginHelper(); ?>  
+1

Veuillez respecter les normes de codage! votre classe devrait être Form_CreateEmail! (comme dans Zend_View_Helper_LoginHelper) –

+0

manqué celui-là, merci de le signaler :) – Andrew

+0

La méthode 'init()' existe pour que vous n'ayez pas à surcharger '__construct ($ options)'. – chelmertz

2

Dans votre mise en page il suffit de faire:

$form = new Loginform(); 
echo $form->render(); 

Il vous suffit de vous assurer que vous spécifiez un contrôleur/action pour le formulaire POST, donc c'est ne pas POST à ​​tout ce contrôleur que vous êtes actuellement sur , qui est le comportement par défaut.