Qual é a melhor maneira de personalizar / adicionar páginas ao gerador de administrador?
-
22-09-2019 - |
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?
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! :-)