Erzeugen eine zend Form mit dynamischen Daten?
-
26-09-2019 - |
Frage
Ich brauche meine Sitzung zugreifen und auf der Grundlage der Sitzungseigenschaft ich aus der Datenbank Verwendung als Optionen in meinem Dropdown zu greifen Sachen benötigen.
$ _ SESSION ist:
[sess_name] => Array(
[properties] => Array(
1=> Hotel A,
2=> Hotel B
),
[selected] => 1
)
Ich brauche Hotel A greifen, ausgewählt aus und greifen dann alle Konten unter Hotel A aus der Datenbank:
id title hotel_id
------------------------------
1 Hotel A Twitter Account 1
2 Hotel B Facebook Account 2
3 Hotel A Facebook Account 1
Ich brauche IDs 1 und 3, weil mein hotel_id 1 im Rahmen der lautet:
$this->addElement( 'select', 'account', array(
'multioptions' => $NEED_IT_HERE
));
Hier ist meine Abfrage / session Grabbing Code:
$cs = new Zend_Session_Namespace( SESS_NAME );
$model = new Model_DbTable_Social;
$s = "
SELECT social_accounts.*
FROM social_accounts
LEFT JOIN social_media_outlets ON social_media_outlets.id = social_accounts.property
WHERE social_accounts.property=".(int)$cs->selectedclient;
Ich habe diesen Code in meiner Form Seite, aber ich brauche es in mein Modell jetzt zu bewegen.
Lösung
Also, wo ist dein Problem?
Erstellen Sie eine korrekte Abfrage der Datenbank diese Konten zu erhalten.
Erstellen Sie eine richtige Anordnung aus dem Ergebnis. (Id => Titel)
Sie können Optionen auf bereits vorhandenes Element gesetzt:
$element = $form->getElement('account');
$element->setMultiOption( $option_array );
Sie können eine Methode in der Formularklasse schaffen, die DB akzeptieren würde obj, Session obj und führen Sie die Aktionen Last benötigt und diese Optionen festgelegt.
Modell, das in der Anwendung ist / modules / foo / models / DbTable / Sozial, die Modellklasse Name ist Model_DbTable_Social und das Modul ist foo. Wirft Fatal error:
Ihre db-Tabellenklasse wahrscheinlich genannt werden sollte:
Foo_Model_DbTable_Social
Und application.ini sollte enthalten:
resources.modules[] =
; (It is autoloader for modules)
Class 'Model_DbTable_Social', wenn ich versuche, es in meiner Form aufzurufen. Oder ist auf diese Weise, die Sie leichter erwähnen?
Es ist eine gute Praxis für diese Ressourcen in __construct zu fragen, wie gesagt chelmertz. Hier ist ein nettes Gespräch zu verwandtem Thema: http://www.youtube.com/watch?v=-FRm3VPhseI
Sie könnten meine Frage lesen wollen „wo Formulare Modelle verbinden“: zend-framework Lehre und MVC-Muster: was für Schicht sollte Daten zwischen Modellen und Formen verbindet ? Nicht zu viele Lösungen obwohl