Создание формы Zend с динамическими данными?
-
26-09-2019 - |
Вопрос
Мне нужно получить доступ к моей сессии и на основе свойства сеанса, которому мне нужно схватить вещи из базы данных в качестве опций в моем выпадении.
$ _Session:
[sess_name] => Array(
[properties] => Array(
1=> Hotel A,
2=> Hotel B
),
[selected] => 1
)
Мне нужно схватить отель A от выбранного, а затем получить доступ к всем аккаунтам в отеле A из базы данных:
id title hotel_id
------------------------------
1 Hotel A Twitter Account 1
2 Hotel B Facebook Account 2
3 Hotel A Facebook Account 1
Мне нужны IDS 1 и 3, потому что My Hotel_ID 1 в контексте:
$this->addElement( 'select', 'account', array(
'multioptions' => $NEED_IT_HERE
));
Вот мой запрос / сеанс, схваченный код:
$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;
У меня есть этот код на своей странице формы, но мне нужно сейчас переместить его в мою модель.
Решение
Так где твоя проблема?
Сделайте правильный запрос в вашей базе данных, чтобы получить эти учетные записи.
Сделайте правильный массив из результата. (ID => Название)
Вы можете установить параметры на уже существующем элементе:
$element = $form->getElement('account');
$element->setMultiOption( $option_array );
Вы можете создать метод в вашем классе форм, который будет принимать DB OBJ, сеанс OBJ и выполнять действия, необходимые для загрузки и установки этих опций.
Модель, которая находится в приложении / модулях / FOO / MODIONS / DBTABLE / SOUSIC, название класса модели - model_dbtable_social и модуль foo. Бросает фатальную ошибку:
Ваш класс DB-таблица, вероятно, должен быть назван:
Foo_Model_DbTable_Social
И Application.ini должен содержать:
resources.modules[] =
; (It is autoloader for modules)
Класс 'model_dbtable_social', когда я пытаюсь вызовать его в мою форму. Или такой способ, который вы упоминаете проще?
Это хорошая практика, чтобы попросить эти ресурсы в __construct, как сказал Челмртц. Вот приятный разговор о связанной теме:http://www.youtube.com/watch?v=-frm3vphsei.
Возможно, вы захотите прочитать мой вопрос на «Где подключить формы к моделям»:Доктрина Zend-Framework, и шаблон MVC: какой слой должен подключать данные между моделями и формами?Не слишком много решений, хотя