2011-01-15 7 views
0

Ich habe login.php Form so machen:kann nicht Zend Formelemente in Viewscript

class Form_Login extends Zend_Form { 

    public function init() { 
    } 

    public function __construct(){ 

     // Set method 
     $this->setMethod('post'); 

     $elements = array(); 

     $element = $this->createElement('text','username'); 
     $element->setRequired(true); 
     $elements[] = $element; 

     $element = $this->createElement('password','password'); 
     $element->setRequired(true); 
     $elements[] = $element; 

     $this->addElements($elements); 

     $this->setDecorators(array(array('viewScript', array('viewScript' => '/authentication/login-form.phtml')))); 
    } 
} 

/authentication/login-form.phtml

<table> 
    <tr> 
     <td><?= $this->getElement('username') ?></td> 
    </tr> 
    <tr> 
     <td><?= $this->getElement('password') ?></td> 
    </tr> 

</table> 

Wenn ich die Render form thenIch bekomme folgende Ausnahme:

Message: Plugin by name 'GetElement' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;C:/wamp/www/databox/application/views\helpers/ 

Wo ich falsch liege. Sollte ich irgendwelche Informationen in application.ini oder Bootstrap eingeben.

Dank

Antwort

3

Sie müssen das Formular View Skript zu übergeben es funktioniert.

public function someAction() 
{ 
    $this->view->form = new Form_Login(); 
} 

in View Skript können Sie die Elemente über

<table> 
<tr> 
    <td><?= $this->form->getElement('username'); ?></td> 
</tr> 
<tr> 
    <td><?= $this->form->getElement('password'); ?></td> 
</tr> 
</table> 
+0

Ja ich die gleiche Sache in someAction tue und Rendering-Form in ** some.phtml ** wie '$ this-> form-> render();'. Aber ich denke, Formularelemente sollten in ** login-form.phtml ** gerendert werden. – Awan

+0

Sie haben also ein View-Skript ohne zugehörige Aktion, in dem das Login-Formular gerendert werden soll? –

+0

@Samuel Herzog: Ich weiß nichts darüber und arbeite gerade an Zend Formen. Kannst du bitte mehr erklären. danke – Awan

1
$this->setDecorators(array(array('viewScript', array('viewScript' =>'/authentication/login-form.phtml','form'=>$form)))); 

erhalten und dann im Hinblick auf

$this->form->getElement('elementName');