Painel de administrador agnóstico da estrutura.
Tentando torná -lo o mais mínimo possível. Ele permite criar várias páginas com diferentes tipos (tabela, formulário). sem intervir muito com sua base de código.
PS: Você ainda precisa configurar suas rotas, a autenticação etc ...
Permitimos vários tipos de respostas, como padrão, usamos visualizações de PHP, mas imaginamos que os usuários do Laravel, como exemplo, usariam blade , portanto, uma solução possível é criar um Renderer diferente.
Por enquanto, temos dois Renderers padrão:
DefaultRenderer Isso apenas retorna uma matriz como saídaJsonRenderer isso retorna a saída JSON Para criar um renderizador, faça -o estender AecodesAdminPanelResponsesRenderer . Em seguida, adicione -o à configuração.
PS: Widgets implementa a interface Widget .
config/panel.php como ponto de partida.Dashboard , aproveite a configuração como uma matriz. $ config = require ' ./config/panel.php ' ;
Aecodes AdminPanel Dashboard:: setup ( $ config );Panel$name e $description do painel (visível na página).query que retorne a matriz de dados. function query (): array {
// get data from database.
return Page:: all ()-> toArray ();
}render que retorne uma variedade de widgets. function render (): array {
return [
Table:: make ([
// (label, name) both are optional
TD :: make ( ' # ' , ' id ' ),
// it's also possible to use Table::column
Table:: column ( ' Title ' , ' title ' ),
])
// ...
];
} function render (): array {
return [
Form:: make ([
Input:: make ( ' title ' )-> title ( ' Title ' ),
// form submit
Action:: button ( ' Save ' ),
])
-> action ( ' # ' )
-> method ( ' post ' ),
// ...
];
} // callback for some route
public function index () {
// PagesTable extends Panel
return ( new Response ( new PagesTable ))-> render ();
} Ao estender a classe Panel , você pode especificar a propriedade $layout .
Isso não é enviado com uma camada de vista. Você pode usar os pacotes de visualizações padrão (em breve).
A configuração padrão é:
return [
// current renderer.
' renderer ' => ' default ' ,
// add new renderer here.
' renderers ' => [
' json ' => Aecodes AdminPanel Responses JsonRenderer::class,
' default ' => Aecodes AdminPanel Responses DefaultRenderer::class,
],
// default classes for button and a tag.
' classes ' => [
' link ' => '' ,
' button ' => '' ,
],
// global menus, can be and array or callback
' menu ' => function () {
return [];
},
// input old value.
' old_value ' => function ( $ name , $ default ) {
return $ default ;
},
// global errors (i.e: validation errors)
' errors ' => function () {
return [];
}
];