Aufgabe:
Variable (Genauergesagt ein Array) aus dem Controller nach Zend_Form bringen.
Gefundene Lösung1:
Nicht wie vorgeschrieben/empfohlen von Zend die Form in die init() Methode zusammenbauen, sondern eine eigene Methode schreiben "StartUpForm".
Dann die Formklasse erstellen, die Variable per Publicmethode ändern in Zend_Form und dann StartUpForm aufrufen und dies an die View übergeben.
Quelle:
http://www.carlowens.me/2010/04/pass...o-a-zend-form/
Was gefällt daran nicht:
Die "Konvention" bzw. die vorgeschlagene Konvention von Zend wird durchbrochen.
Diese besagt, dass die View immer in der init() Methode zusammengebastelt wird.
Gefundene Lösung2:
Diese funktioniert jedoch nicht.
Quelle:
http://www.zfforums.com/zend-framewo....html#post5460
__________________________________________________ ________________________________________________
Während ich diesen Post verfasst haben, habe ich die Lösung nun gefunden.
Da es mich über eine Stund gekostet hat, denke ich wird es einigen bestimmt weiterhelfen.
Lösung:
Zuerst wird im Controller Zend_Form initialisiert:
In meinem Fall möchte ich die Variable _answers später benutzen, daher gebe ich 'answers' mit.
Da diese ein Array beinhalten soll, gebe ich als value entsprechend array('abc', 'abd') mit.
Jetzt zum extrem wichtigen Teil, in eurer Form muss folgendes stehen:
Was ich erst nach einer Stunde gefunden habe ist, dass Zend_Form bei der Initialisierung die übergebenen Variablen aus dem Controller nur korrekt übernimmt, wenn eine setter Methode gesetzt ist.
Diese wird nämlich automatisch aufgerufen.
Ähnlich der _init Methode der Bootstrapdateien, welche automatisch aufgerufen werden.
Nun könnt ihr ganz normal per getter Methode auf euer Array zugreifen.
Variable (Genauergesagt ein Array) aus dem Controller nach Zend_Form bringen.
Gefundene Lösung1:
Nicht wie vorgeschrieben/empfohlen von Zend die Form in die init() Methode zusammenbauen, sondern eine eigene Methode schreiben "StartUpForm".
Dann die Formklasse erstellen, die Variable per Publicmethode ändern in Zend_Form und dann StartUpForm aufrufen und dies an die View übergeben.
Quelle:
http://www.carlowens.me/2010/04/pass...o-a-zend-form/
Was gefällt daran nicht:
Die "Konvention" bzw. die vorgeschlagene Konvention von Zend wird durchbrochen.
Diese besagt, dass die View immer in der init() Methode zusammengebastelt wird.
Gefundene Lösung2:
PHP-Code:
$form->getElement('answers')->setMultiOptions(array('adsas','dasas'));
PHP-Code:
Array ( ) Fatal error: Call to a member function setMultiOptions() on a non-object in /var/www/projects/limebulls/surveybull/application/modules/survey/controllers/QuestionsController.php on line 37
http://www.zfforums.com/zend-framewo....html#post5460
__________________________________________________ ________________________________________________
Während ich diesen Post verfasst haben, habe ich die Lösung nun gefunden.
Da es mich über eine Stund gekostet hat, denke ich wird es einigen bestimmt weiterhelfen.
Lösung:
Zuerst wird im Controller Zend_Form initialisiert:
PHP-Code:
$form = new Survey_Form_Current(array(
'answers' => array('abc', 'abd')
));
Da diese ein Array beinhalten soll, gebe ich als value entsprechend array('abc', 'abd') mit.
Jetzt zum extrem wichtigen Teil, in eurer Form muss folgendes stehen:
PHP-Code:
[...]
protected $_answers = array();
public function getAnswers() {
return $this->_answers;
}
public function setAnswers($answers){
$this->_answers = $answers;
}
[...]
Diese wird nämlich automatisch aufgerufen.
Ähnlich der _init Methode der Bootstrapdateien, welche automatisch aufgerufen werden.
Nun könnt ihr ganz normal per getter Methode auf euer Array zugreifen.

Kommentar