Pergunta

Preciso acessar minha sessão e com base na propriedade de sessão, preciso pegar coisas do banco de dados para usar como opções no meu suspensão.

$ _Session é:

[sess_name] => Array(
   [properties] => Array(
      1=> Hotel A,
      2=> Hotel B
   ),
   [selected] => 1
)

Preciso pegar o Hotel A do selecionado e depois acessar todas as contas do hotel A no banco de dados:

id  title                       hotel_id
------------------------------
1    Hotel A Twitter Account     1
2    Hotel B Facebook Account    2
3    Hotel A Facebook Account    1

Preciso de IDs 1 e 3 porque meu hotel_id é 1 no contexto de:

$this->addElement(  'select', 'account', array(
  'multioptions' => $NEED_IT_HERE
));

Aqui está minha consulta / codificação de pegador de sessão:

$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;

Eu tenho esse código na minha página de formulário, mas preciso movê -lo para o meu modelo agora.

Foi útil?

Solução

Então, onde está o seu problema?

Faça uma consulta adequada no seu banco de dados para obter essas contas.

Faça uma matriz adequada com o resultado. (id => título)

Você pode definir opções no elemento já existente:

$element = $form->getElement('account');
$element->setMultiOption( $option_array );

Você pode criar um método na sua classe de formulário que aceitaria o DB OBJ, o OBJ da sessão e executaria as ações necessárias para carregar e definir essas opções.


Modelo, que está em aplicativos/módulos/foo/modelos/dbtable/social, o nome da classe modelo é modelo_dbtable_social e o módulo é foo. Joga erro fatal:

Sua aula de tabela DB provavelmente deve ser nomeada:

Foo_Model_DbTable_Social

E Application.ini deve conter:

resources.modules[] = 
; (It is autoloader for modules)

Class 'Model_dbtable_social' quando tento invocá -lo no meu formulário. Ou é que você menciona mais fácil?

É uma boa prática pedir esses recursos em __construct como Chelmertz. Aqui está uma boa conversa sobre o assunto relacionado:http://www.youtube.com/watch?v=-frm3vphsei

Você pode querer ler minha pergunta sobre "onde conectar formulários aos modelos":Doutrina do Zend-Framework e padrão MVC: que tipo de camada deve conectar dados entre modelos e formulários?Não há muitas soluções embora

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top