8 Stimmen

Zend Forms - populate() und setDefaults()

Nehmen wir an, ich habe ein Formular, das einen Vornamen und einen Nachnamen erfasst:

$first_name = new Zend_Form_Element_Text('first_name');
$first_name->setLabel("First Name")
    ->setRequired(true);

$last_name = new Zend_Form_Element_Text('last_name');
$last_name->setLabel("Last Name")
    ->setRequired(true);

$form = new Zend_Form();
$form->addElement($first_name)
    ->addElement($last_name)

Wenn ich die Methode "populate($data)" oder "setDefaults($data)" auf dem Formular verwenden möchte, wie muss das Array organisiert sein? Welche Art von Array erwarten diese Funktionen? Ich habe diese Informationen nicht in den Unterlagen finden können.

Ich weiß auch, dass ich den Wert beim Erstellen des Elements selbst festlegen kann, aber das ist nicht das, was ich brauche.

14voto

Michi Punkte 223

Die Methode form->populate() nimmt ein Array entgegen, dessen Schlüssel die Namen von der Formularfelder sind.

Das Zend_Db_Table_Row Objekt implementiert eine toArray() Methode die hier verwendet werden kann die hier verwendet werden kann (wie viele andere Objekte auch). Man kann also Dinge tun wie:

$form = new MyForm;

$table = new MyTable;
$rowset = $table->find($id);
$row = $rowset->current();

$form->populate($row->toArray());

2 Stimmen

+1 für die Angabe eines allgemeinen Anwendungsfalls. Ich würde sagen, dass in den meisten Fällen populate() mit diesem Argument aufgerufen wird.

13voto

Steve Punkte 3513

Array-Schlüssel sind die Feldnamen, Array-Werte sind die Feldwerte.

$data = array( 'first_name' => 'Mickey', 'last_name' => 'Mouse' );

8voto

Devon Punkte 5686

FYI - in Zend_Form, $form->populate($data) macht einfach einen Aufruf an $form->setDefaults($data) .

2 Stimmen

Es kann sehr lehrreich sein, ab und zu einen Blick in den Quellcode des Zend Frameworks zu werfen. Einige Teile sind recht komplex, aber vieles davon ist tatsächlich verständlich.

1voto

cristianojeda Punkte 329

Einfach, ein Array erstellen

$data = array('nameInput'=> 'your value');

Fügen Sie Ihr Formular zu Ihrer Ansicht hinzu

$this->view->form = $form;

dann fügen Sie Daten in das Formular ein

$form->populate($data);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X