Índice
Quando desenvolvemos um aplicativo ou sistemas web, geralmente precisamos interagir com bancos de dados. Para isso, precisamos criar interfaces que nos permitam conectar, adicionar dados, editar ou excluí-los. Este tipo de operação é conhecido de diferentes maneirasCRUD é um acrônimo que significa Criar, Ler, Atualizar e Excluir. ABM é uma sigla que significa High, Low and Data Modification. ABCDE é um acrônimo que significa Adicionar, Localizar, Alterar, Exibir (mostrar ou listar), Excluir dados.
Todo desenvolvedor web php sempre busca otimizar o tempo de desenvolvimento e fazer esse tipo de tarefa requer muito tempo, por exemplo, criar um sistema de administração web simples, estável e seguro. Na verdade, o que mais leva tempo é entender e traduzir para o código os requisitos de interação com o banco de dados, a lógica do negócio, os modelos e as visualizações para interagir com cada tabela do banco de dados.
Uma solução, neste caso, para o CodeIgniter, é usar o Biblioteca Grocerycrud, que se encarregará de gerar tudo apenas configurando alguns parâmetros, Também incorpora design css, JavaScripts, tabelas, formulários, grade de dados, funções, modelos que podemos usar diretamente em nosso sistema.
Grocery CRUD é uma biblioteca desenvolvida em pHp, é um software livre e de código aberto com licença GPL v3 e MIT. Para usá-lo, devemos baixar a biblioteca em http://www.grocerycrud.com/downloads
Depois de baixá-lo, descompactamos e copiamos os arquivos
Não iremos detalhar como configurar Codeigniter em vez disso, vamos nos concentrar no uso direto. Suponha que temos um banco de dados de imóveis, cujas tabelas são imóveis, usuários, vilas ou cidades, províncias, tipos de imóveis e tipo de operação se é venda ou aluguel.
Para gerar o crud da tabela de imóveis, criaremos um controlador chamado real estate com o seguinte código
carregar-> banco de dados (); $ this-> load-> library ('grocery_CRUD');} índice de função pública () {$ crud = new grocery_CRUD (); $ crud-> set_theme ('datatables'); $ crud-> set_table ('propriedades'); $ crud-> colunas ('id do usuário', 'id do tipo de propriedade', 'preço'); $ grid = $ crud-> render (); $ this-> load-> view ('real estate.php', $ grid);}}Invocamos a biblioteca de banco de dados e a biblioteca mercearia em seguida, definimos o tema ou design que queremos usar para a grade, definimos a tabela para mostrar e indicamos quais colunas ou campos serão mostrados atribuindo os campos da tabela que queremos que sejam mostrados, geramos tudo com a função render () e o salvamos em uma variável que enviamos para a visualização. Em seguida, criamos a visualização que chamamos de lista de imóveis.php
Na view teremos que mostrar os css e js necessários para que funcione, a localização dos arquivos já está definida pelo template, neste caso decidimos usar o template datables que podemos encontrar no diretório de modelos:
/ assets / grocery_crud / themes / datatables /Se testarmos nosso aplicativo, o resultado será o seguinte:
PROLONGAR
Vemos como toda a grade foi gerada com pouco código, agora veremos como adicionar e melhorar funcionalidades. Por exemplo, as colunas de id podemos alterar o nome e também em vez do id dos dados relacionados que aparecem, gostaríamos de alguns dados mais significativos por exemplo em vez do id do usuário o nome aparece, e em vez do idtipoinmueble que mostra de que tipo é se for em casa, escritório, etc. Para isso devemos fazer algumas modificações no controlador.Para alterar o nome de uma coluna, fazemos o seguinte no controlador, usamos display_as (currentname, newname)
$ crud-> columns ('userid', 'property type id', 'price'); $ crud-> display_as ('user id', 'User'); $ crud-> display_as ('property type id', ' Tipo de Propriedade');Para mostrar os dados em vez do id, devemos indicar com set_subjet (tabela relacionada) e set_relation (id relacional, tabela relacionada, tabela relacionada ao campo)
$ crud-> set_subject ('user'); $ crud-> set_relation ('userid', 'users', 'name'); // o id é aquele do banco de dados que estou mostrando, ou seja, relacionamento em imóveis $ crud -> set_relation ('property_type', 'property_type', 'name');Em seguida, atualizamos a página para ver as alterações com o código que adicionamos:
Vejamos como é gerado o registro ou modificação dos dados, a partir dos campos da estrutura da tabela é gerado o formulário de registro dos dados. Alguns podem configurá-los de acordo com o tipo de dado, outros devemos indicar que tipo de dado e elemento de formulário deve ser atribuído.
Vemos que os campos de tipo de texto se tornam textarea e o plugin cfkeditor é adicionado, podemos vê-lo no site ckeditor.com, os campos de data tornam-se selecionadores de data, os campos relacionados se tornam combos ou elementos de seleção suspensa.
Um aspecto importante é como validar os dados que registramos, para isso devemos utilizar a função required_fields (field), pois no controlador podemos adicionar o seguinte código para validar que um campo é obrigatório.
$ crud-> required_fields ('id do usuário', 'preço');Também podemos estabelecer o tipo de dados que vamos validar com a função set_rules
$ crud-> set_rules ('preço', 'Preço do aluguel', 'numérico'); $ crud-> set_rules ('email', 'Email do usuário', 'email');Desta forma, indicará abaixo do formulário no momento do envio se há algum erro:
Além dos dados que podemos inserir, neste caso precisamos fazer upload de arquivos de imagem das propriedades, para eles devemos usar a função set_field_upload ('campo,' diretório '), por padrão, podemos usar o diretório ativos / uploads / arquivos, que já incorpora merceariaCaso contrário, podemos configurar o nosso próprio.
$ crud-> set_field_upload ('imagem1', 'ativos / uploads / arquivos'); $ crud-> set_field_upload ('imagem2,' ativos / uploads / arquivos '); $ crud-> set_field_upload ('imagem3', 'ativos / uploads / arquivos'); $ crud-> set_field_upload ('imagem4', 'ativos / uploads / arquivos');Como fazer uma grade de dados multilíngue
Dentro do diretório / assets / grocery_crud nós temos o diretório línguas com todas as traduções para cada idioma da interface que a grade mostra,
Podemos ir para a configuração do diretório application / config / grocery_crud.php e indicar o idioma padrão que queremos usar na configuração do idioma.
$ config ['grocery_crud_default_language'] = 'espanhol';Se quisermos fazer isso dinamicamente, por exemplo através de um menu para escolher o idioma da web, adicionamos o idioma ao nosso código
$ crud-> set_language ("inglês").Removendo funcionalidades da grade
Uma das possibilidades é remover funcionalidades que não queremos que sejam mostradas ou desabilitar os campos que usaremos para isso um conjunto e suas diferentes possibilidades unset_add, unset_edit, unset_delete e unset_list
Por exemplo, se usarmos $ crud-> unset_edit (); o botão de edição não aparecerá na lista, se usarmos $ crud-> unset_texteditor ('descrição'); a área de texto correspondente à descrição não usará o plugin cfkeditor. Se quisermos apenas mostrar uma lista sem poder realizar nenhuma operação diferente de pesquisa, usamos a função.
$ crud-> unset_operations ();Como invocar uma função de um evento
Grocerycurd nos permite manipular retornos de chamada, ou seja, invocar uma função antes, durante ou depois da ocorrência de um evento. Alguns exemplos. Se quisermos adicionar um retorno de chamada quando o formulário for gerado e afetar um campo específico, usaremos a seguinte função:
$ crud-> callback_add_field ('email', array ($ this, 'mudança de cor'));Então, no controlador, definimos a função que invocamos no retorno de chamada
mudança de cor da função () {return '';}Se quisermos manipular qualquer coluna, usaremos o seguinte:
código $ crud-> callback_column ('preço', array ($ this, 'alocar moeda')); função alocar moeda ($ valor, $ linha) {retornar $ valor. ' € ';}Também podemos usar o retorno de chamada antes de inserir ou salvar dados:
$ crud-> callback_before_insert (array ($ this, 'calcule_total));Existem muitos outros eventos para invocar callbacks que podemos consultar no site da Grocery Crud. Outras utilidades que possui é a possibilidade de exportar para excel e imprimir a grade com seus dados, se quisermos adicionar um botão com funcionalidade extra como exportar para pdf, devemos modificar o código do template que está no diretório ativos \ grocery_crud \ themes \ mypantilla \ views, no diretório do modelo que estamos usando, modificamos os arquivos list_template.php e adicionamos o que precisamos.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo