Pergunta

Estou usando o Symfony 1.4 e a doutrina.

O back -end do meu aplicativo foi construído usando o gerador de administração de Symfony. Funciona muito bem quando quero exibir coisas básicas.

Mas Tehre não é muita documentação sobre como aprimorá -lo e adicionar novas páginas.

Vamos dar um exemplo: quero listar itens publicados em uma página e itens a serem publicados em outro. Eu usei várias maneiras para isso no meu aplicativo, mas não consigo descobrir qual é a melhor maneira:

  • Brincando com filtros e depois modifique os modelos, dependendo de onde você está?
  • Criando outro módulo chamando um diferente table_method?
  • Alguma outra técnica que eu não conheço?

Qual é a melhor prática aqui? Como vocês costumam fazer para personalizar seu administrador?

Foi útil?

Solução

Autopromotão sem vergonha aqui. Eu escrevi um Postagem do blog Nesta semana, ao personalizar o gerador de administrador - uma das coisas que fiz foi adicionar novas páginas etc. ao gerador. A maneira como fiz isso é provavelmente um pouco hardcore, mas funciona bem :-)

O melhor lugar para começar a procurar é a classe de ações geradas automaticamente para o seu módulo e estendê-lo em seu app/module/actions/actions.class.php Arquivo. Em particular, a ação do índice que configura o Pager ORM. Você deve usar qualquer consulta do seu ORM para fornecer aos dados do seu ORM - nos casos em que eu precisava alterá -lo, uso uma consulta de doutrina gerada da mesma maneira que o normal passar para o pager. Isso significa que eu posso personalizar quais campos são exibidos, incluindo aqueles de outras tabelas unidas, etc. em uma única consulta. Este é o seu 'método da tabela' mencionado acima.

Os filtros funcionarão da mesma forma - depende do seu caso de uso e se os filtros são apropriados, principalmente para exibição. Se você quiser um /showpublisheditems page, então eu iria com uma nova ação e a nova consulta para o pager. Se você deseja personalização on-the-fly, vá com a opção Filtro.

Os documentos do filtro que eu pensei que estavam um pouco carentes também em alguns lugares - dica rápida, eles procuram um addYourColumnNameColumnQuery() Método na sua classe de filtro de nível superior (lib/filtro/...) que leva uma consulta e usa por exemplo addWhere("x.column_name = ?", $foo) para a consulta passou.

Bleh :-) Desculpe, isso foi um pouco de despejo cerebral, mas espero que ajude! :-)

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