Generare un modulo Zend con dati dinamici?
-
26-09-2019 - |
Domanda
Devo accedere alla mia sessione e in base alla proprietà della sessione ho bisogno di prendere cose dal database per utilizzare come opzioni nel mio discesa.
$ _Session è:
[sess_name] => Array(
[properties] => Array(
1=> Hotel A,
2=> Hotel B
),
[selected] => 1
)
Ho bisogno di prendere l'hotel A da selezionato, quindi accedere a tutti gli account sotto l'hotel A dal database:
id title hotel_id
------------------------------
1 Hotel A Twitter Account 1
2 Hotel B Facebook Account 2
3 Hotel A Facebook Account 1
Ho bisogno di ID 1 e 3 perché il mio hotel_id è 1 nel contesto di:
$this->addElement( 'select', 'account', array(
'multioptions' => $NEED_IT_HERE
));
Ecco il mio codice di query / sessione:
$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;
Ho questo codice nella mia pagina del modulo, ma ora devo spostarlo nel mio modello.
Soluzione
Allora, dove è il tuo problema?
fare una query corretta sul database per ottenere tali conti.
Crea un allineamento corretto dal risultato. (Id => Titolo)
È possibile impostare le opzioni su elemento già esistente:
$element = $form->getElement('account');
$element->setMultiOption( $option_array );
È possibile creare un metodo nella classe forma che avrebbe accettato DB obj, Sessione obj ed eseguire le azioni necessarie per il carico e impostare le opzioni.
modello, che è in applicazione / modules / pippo / modelli / DBTable / sociali, il nome della classe del modello è Model_DbTable_Social e il modulo è foo. Getta Fatal error:
La classe db-tavolo, probabilmente deve essere denominato:
Foo_Model_DbTable_Social
E Application.ini dovrebbe contenere:
resources.modules[] =
; (It is autoloader for modules)
Class 'Model_DbTable_Social' quando provo a invocarlo nella mia forma. O è in questo modo che si parla più facile?
Si tratta di una buona pratica di chiedere tali risorse in __construct come chelmertz detto. Ecco un bel discorso sul argomento correlato: http://www.youtube.com/watch?v=-FRm3VPhseI
Si potrebbe desiderare di leggere la mia domanda su "dove collegare le forme ai modelli": zend-framework e pattern MVC: che tipo di strato dovrebbe collegare i dati tra modelli e forme ? Non troppo molte soluzioni anche se