2012-04-01 8 views
1

Ich arbeite gerade mit Zend. Ich habe diesen ViewScript Decorator für das Formular entdeckt und finde es eine gute Alternative für die Verwendung der klassischen Zend Form Decorators . Aber ich habe Probleme beim Anzeigen des Formulars. Ich habe den Code funktioniert, aber keine Anzeige von der Ansicht.Zend: ViewScript Decorator riert keine Form Elemente

Hier sind meine Codes:

Form:

class Application_Form_Registration extends Zend_Form 
{ 
    public function init() 
    { 
     $username = new Zend_Form_Element_Text("username"); 
     $submit = new Zend_Form_Element_Submit("submit"); 
     $this->setAction("/test.php"); 
     $this->setMethod("get"); 
     $this->addElements(array($username, $submit)); 
     $this->setElementDecorators(array(
      array('ViewScript', array(
      'viewScript'=>'test.phtml' 
     )) 
     )); 
    } 
} 

Controller:

class IndexController extends Zend_Controller_Action 
{ 
    public function init() 
    { 
    } 

    public function indexAction() 
    { 
     $form = new Application_Form_Registration(); 
     $this->view->form = $form; 

    } 
} 

test.phtml (My Viewscript)

<form action="<?php $this->escape($this->form->getAction()); ?>"> 
<div style="width: 100px; height: 100px; background: blue;"> 
    <?php echo $this->element->username; ?> 
    <?php echo $this->element->submit; ?> 
</div> 
</form> 

Und meiner Meinung nach (index.phtml)

<?php echo $this->form; ?> 

Habe ich etwas verpasst und/oder falsch gemacht mit dem obigen Code?

Antwort

3

ersetzen

$this->setElementDecorators(array(
       array('ViewScript', array(
       'viewScript'=>'test.phtml' 
      )) 
      )); 

mit

$this->setDecorators(array(
       array('ViewScript', array(
       'viewScript'=>'test.phtml' 
      )) 
      )); 

Sie haben den Standard-Dekorateur "ViewHelper" baubiologisch übersteuert, daher gibt es nichts zu zeigen.

Sowohl Form- (HTML-Form-Tag) als auch Formularelemente (Eingabetyp Text, Radio usw.) verwenden Dekoratoren, um sich selbst anzuzeigen. Durch das Aufrufen von setElementDecorators in der Zend_Form-Instanz überschreiben Sie Formularelemente, Dekoratoren und nicht Formulardekoratoren, für die wir stattdessen setDecorators verwenden müssen.

+0

danke Kumpel .. der Code funktioniert für mich .. aber Was ist der Unterschied zwischen den beiden? – Aldee

+0

@AldeeMativo aktualisiert meine ans hoffe, es erklärt es gut. –

+0

ahhh .. ich habe es .. also, wenn wir die setElementDecorators verwenden, haben wir alles übergangen, was es umgibt .. jetzt habe ich es .. danke ..: D – Aldee

1

es glauben oder nicht, Sie Zugriff auf getAction im Teil mit element-> getAction, und vergessen Sie nicht, es echo:

//test.php 
<form action="<?php echo $this->escape($this->element->getAction()); ?>"> 
<div style="width: 100px; height: 100px; background: blue;"> 
    <?php echo $this->element->username->render(); ?> 
    <?php echo $this->element->submit->render(); ?> 
</div> 
</form> 

und die Aussicht wäre:

//index.phtml 
<?php echo $this->form ?> 
+0

danke felsig ... Ich habe getan, was Sie angewiesen, aber immer noch keine Form gerendert/angezeigt .. haben Sie eine Idee? – Aldee

+0

wo befindet sich test.php? – RockyFord

+0

in application/view/scripts – Aldee

Verwandte Themen