Formulário mestre / detail ( com abas)

Bom dia a todos,

Sou novato no Yii, gostaria de saber de vcs Jed’s como é tratado no frameworks formulários com abas master/detail, exemplo essa situação:

Pensei em salvar os dados do form detail em sessão mas imagino que o Yii deve ter algo que faça isso de forma mais inteligente, alguém sabe me informar sobre isto?

Desconheço outro método no Yii que não seja com sessões.

EDIT: Tem os métodos de Cache também. Nunca usei com esta finalidade, mas acredito que possa ser útil.

Eu uso com cache, não é difícil. É quase igual usar sessão. Mas eu adotei pq aqui é frequente 300 detalhes por master, o que complica usar sessao, pq ela acaba ficando muito carregada.

Em volumes pequenos, nem faz diferença. A maior parte do meu sistema usa sessão. Mudei pra usar cache em alguns locais chaves pra ganhar desenpenho e estou modificando gradativamente no resto, não mais por necessidade, mas por questões de padronização.

Obrigado pela resposta pessoal, neste caso devo adotar sessão mesmo pois são apenas dois details.

Outra questão procurei mas não encontrei. Usei o GII para fazer os forms, gostei da rapidez, mas existe, no frameworks, algum meio de acelerar este processo para implementar os formulários details no master ou mesmo no GII existe alguma forma de já gerar os formulários master e details juntos?

Digo sem ter que fazer tudo na mão pois já estava fazendo os formularios details no dedão mesmo.

O que vcs usam quando tem que fazer este tipo de formulário?

Eu acho que não tem… Eu to fazendo os teamplates pra gerar cadastros master-details para o gii.(Não usava gii, pq eu iniciei o proj bem antes do gii)

Não ta snedo difícil, e vc pode fazer o seu. Não da pra disponibilizar os meus pq é muito específico daqui, mas, se quiser, podemos trocar idéias de como fazer, principalmente pq não tem documentação boa.

Digamos que eu ainda estou em busca da solução ideal para isso, então tenhos já várias abordagens.

Atualmente, minha melhor solução utiliza a extensão EFancyBox para gerar os popus do mestre-detalhe.

Também sempre faço uma view e action ‘grid’, para montar o grid dos filhos.

No método ‘onClose’ do fancybox, toda vez que o popup é fechado, faço com que o grid seja exibido novamente via AJAX.

@Daniel: Mas o escopo do cache não vale para a aplicação inteira? Como faz para separar os dados para cada usuário?

Eu instanciei uma classe de cache na mão pra fazer isso.

Eu configuro o padrão da minha aplicação como MemCache, mas como o é um cache único, MemCache vc tem a visibilidade do cache para todas as aplicações que estão no servidor, não seria interessânte ter dados como o detalhe de um ítem de venda nele onde uma outra aplicação tenha possibilidade de acessar, mas, pra fragmentos de paginas, e outras coisas que não são dados privados da minha aplicação, ele é um avião.

Então, pros detalhes, eu uso o FileCache instanciado manualmente, onde defino o caminho dos arquivos de cache em subpastas com o id da sessão do usuário.

Pra ficar mais organizado, eu criei parâmetros no config/main.php que definem o caminho base onde meu FileCache vai colocar os arquivos dele, criei uma classe do tipo Factory que lê estes parâmetros, instancia e seta os parâmetros iniciais pra classe, .

Assim, no servidor, ficou os arquivos que uso de cache pros detalhes dentro da pasta da minha aplicação, onde uma outra aplicação não conseguiria acessar (Dependendo da configo do servidor, claro, mas ai já não depende de mim mais).

Pra usar o cache instanciado manualmente é praticamente a mesma coisa, ao inves de usar Yii::app()->cache->get e Yii::app()->cache->set, vc usa $instanciaCache->get e $instanciaCache->set.

[Edit]

to sem os fontes em casa, mas na segunda eu posto aqui os códigos de uso, do Factory e um exemplo da config.

[/Edit]

Achei complicado, acho que prefiro o session mesmo, rsrsrs.

Numa aplicação com um grau de concorrência bem grande, utilizei sessão para armazenar os AR e nao ficou carregado nao.