Inhoudsopgave
Wanneer we een applicatie of websystemen ontwikkelen, hebben we meestal interactie met databases nodig. Hiervoor moeten we interfaces maken waarmee we verbinding kunnen maken, gegevens kunnen toevoegen, bewerken of verwijderen. Dit type operatie is op verschillende manieren bekendCRUD is een acroniem dat staat voor Create, Read, Update en Delete. ABM is een acroniem dat staat voor High, Low en Data Modification. ABCDE is een acroniem dat staat voor Add, Find, Change, Display (show or list), Delete data.
Elke php-webontwikkelaar probeert altijd de ontwikkeltijd te optimaliseren en het uitvoeren van dit soort taken kost veel tijd, bijvoorbeeld het creëren van een eenvoudig, stabiel en veilig webbeheersysteem. In feite kost het de meeste tijd om de interactie-eisen met de database, de bedrijfslogica, de modellen en de weergaven voor interactie met elke tabel in de database te begrijpen en in de code te vertalen.
Een oplossing in dit geval voor CodeIgniter is om de Grocerycrud-bibliotheek, die verantwoordelijk is voor het genereren van alles door slechts enkele parameters te configureren, Het bevat ook css-ontwerp, JavaScripts, tabellen, formulieren, gegevensraster, functies, modellen die we rechtstreeks in ons systeem kunnen gebruiken.
Grocery CRUD is een bibliotheek ontwikkeld in pHp, is vrije software en open source zijn licentie GPL v3 en MIT. Om het te gebruiken, moeten we de bibliotheek downloaden van http://www.grocerycrud.com/downloads
Na het downloaden, unzippen en kopiëren we de bestanden
We zullen niet in detail treden hoe te configureren medeontsteker in plaats daarvan gaan we ons concentreren op direct gebruik. Stel dat we een database met eigendommen hebben, waarvan de tabellen eigenschappen, gebruikers, dorpen of steden, provincies, soorten eigendommen en het type operatie zijn als het om koop of huur gaat.
Om de crud van de onroerendgoedtabel te genereren, maken we een controller met de naam onroerend goed met de volgende code:
laden-> database (); $ dit-> laad-> bibliotheek ('grocery_CRUD');} openbare functie-index () {$ crud = nieuwe kruidenierswinkel_CRUD (); $ crud-> set_theme ('gegevenstabel'); $ crud-> set_table ('properties'); $ crud-> kolommen ('userid', 'property type id', 'price'); $ grid = $ crud-> render (); $ this-> load-> view ('real estate.php', $ grid);}}We roepen de databasebibliotheek en de bibliotheek aan kruidenierswaren dan stellen we het thema of ontwerp in dat we voor het raster willen gebruiken, we stellen de tabel in om te laten zien en we geven aan welke kolommen of velden worden getoond door de velden van de tabel toe te wijzen die we willen zien, we genereren alles met de functie veroorzaken () en we slaan het op in een variabele die we naar de weergave sturen. Vervolgens maken we de weergave die we real estate list.php . noemen
In de weergave zullen we de css en js moeten weergeven die nodig zijn om te werken, de locatie van de bestanden is al gedefinieerd door de sjabloon, in dit geval hebben we besloten om de sjabloon te gebruiken datables die we kunnen vinden in de sjabloonmap:
/ activa / kruidenierswaren_crud / thema's / datatabellen /Als we onze applicatie testen, is het resultaat het volgende:
VERGROTEN
We zien hoe het hele raster is gegenereerd met weinig code, nu zullen we zien hoe we functionaliteiten kunnen toevoegen en verbeteren. Bijvoorbeeld de id-kolommen kunnen we de naam wijzigen en ook in plaats van de id van de gerelateerde gegevens die verschijnen, willen we wat meer significante gegevens, bijvoorbeeld in plaats van de gebruikers-ID verschijnt de naam, en in plaats van de idtipoinmueble die laat zien welk type het is als het thuis, op kantoor, enz. Hiervoor moeten we enkele wijzigingen aanbrengen in de controller.Om de naam van een kolom te wijzigen doen we het volgende in de controller gebruiken we display_as (huidige naam, nieuwe naam)
$ crud-> kolommen ('userid', 'property type id', 'prijs'); $ crud-> display_as ('user id', 'User'); $ crud-> display_as ('property type id', ' Eigendom type');Om de gegevens te tonen in plaats van de id moeten we aangeven met set_subjet (gerelateerde tabel) en set_relation (relationele id, gerelateerde tabel, veldgerelateerde tabel)
$ crud-> set_subject ('gebruiker'); $ crud-> set_relation ('userid', 'gebruikers', 'naam'); // de id is die van de database die ik laat zien, dat wil zeggen, de relatie in onroerend goed $ crud -> set_relation ('property_type', 'property_type', 'name');Vervolgens vernieuwen we de pagina om de wijzigingen te zien met de code die we hebben toegevoegd:
Laten we eens kijken hoe de gegevensregistratie of -wijziging wordt gegenereerd, uit de velden van de tabelstructuur wordt het gegevensregistratieformulier gegenereerd. Sommigen kunnen ze configureren volgens het type gegevens, anderen moeten we aangeven welk type gegevens en formulierelement moeten worden toegewezen.
We zien dat de teksttypevelden textarea worden en de cfkeditor-plug-in is toegevoegd, we kunnen het zien op de ckeditor.com-website, de datumvelden worden datepicker, de gerelateerde velden worden combo's of drop-down selectie-elementen.
Een belangrijk aspect is hoe we de gegevens die we registreren valideren, hiervoor moeten we de functie required_fields (field) gebruiken, daarom kunnen we in de controller de volgende code toevoegen om te valideren dat een veld vereist is.
$ crud-> required_fields ('userid', 'price');We kunnen ook het type gegevens vaststellen dat we gaan valideren met de functie set_rules
$ crud-> set_rules ('prijs', 'Huurprijs', 'numeriek'); $ crud-> set_rules ('e-mail', 'E-mail gebruiker', 'e-mail');Op deze manier zal het onder het formulier bij het verzenden aangeven of er een fout is:
Naast de gegevens die we kunnen invoeren, moeten we in dit geval afbeeldingsbestanden van de eigenschappen uploaden, daarvoor moeten we de functie gebruiken set_field_upload ('veld,' map '), standaard kunnen we de map gebruiken activa / uploads / bestanden, die al bevat kruidenierswarenAnders kunnen we onze eigen configureren.
$ crud-> set_field_upload ('image1', 'assets / uploads / files'); $ crud-> set_field_upload ('image2,' activa / uploads / bestanden'); $ crud-> set_field_upload ('image3', 'assets / uploads / bestanden'); $ crud-> set_field_upload ('image4', 'assets / uploads / files');Hoe maak je een meertalig dataraster
In de map / activa / kruidenierswinkel_crud we hebben de directory Talen met alle vertalingen naar elke taal van de interface die het raster laat zien,
We kunnen vanuit de directory naar de configuratie gaan applicatie / config / kruidenierswinkel_crud.php en geef de standaardtaal aan die we willen gebruiken in de taalconfiguratie.
$ config ['grocery_crud_default_language'] = 'Spaans';Als we het dynamisch willen doen, bijvoorbeeld via een menu om de taal van het web te kiezen, voegen we de taal toe aan onze code
$ crud-> set_language ("engels").Functies uit het raster verwijderen
Een van de mogelijkheden is om functionaliteiten te verwijderen die we niet willen zien of velden uit te schakelen die we hiervoor gebruiken een set en zijn verschillende mogelijkheden unset_add, unset_edit, unset_delete en unset_list
Dus als we bijvoorbeeld gebruiken $ crud-> unset_edit (); de edit-knop zal niet in de lijst verschijnen, als we gebruiken $ crud-> unset_texteditor ('beschrijving'); het tekstgebied dat overeenkomt met de beschrijving zal de cfkeditor-plug-in niet gebruiken. Als we alleen een lijst willen tonen zonder een andere bewerking dan zoeken uit te kunnen voeren, gebruiken we de functie.
$ crud-> unset_operations ();Een functie aanroepen vanuit een gebeurtenis
Met Grocerycurd kunnen we callbacks afhandelen, dat wil zeggen, een functie aanroepen voor, tijdens of na een gebeurtenis. Een paar voorbeelden. Als we een callback willen toevoegen wanneer het formulier wordt gegenereerd en een bepaald veld beïnvloeden, gebruiken we de volgende functie:
$ crud-> callback_add_field ('e-mail', array ($ dit, 'kleurverandering'));Vervolgens definiëren we in de controller de functie die we aanroepen in de callback
functie kleurverandering () {return '';}Als we een kolom willen manipuleren, gebruiken we het volgende:
code $ crud-> callback_column ('prijs', array ($ dit, 'allocatecurrency')); functie allocatecurrency ($ waarde, $ rij) {return $ waarde. ' € ';}We kunnen de terugbelfunctie ook gebruiken voordat gegevens worden ingevoerd of opgeslagen:
$ crud-> callback_before_insert (array ($ dit, 'calculate_total));Er zijn veel andere evenementen om terugbellen in te roepen die we kunnen raadplegen op de website van Kruidenier Crud. Andere hulpprogramma's die het heeft, zijn de mogelijkheid om te exporteren naar Excel en het raster met zijn gegevens af te drukken. Als we een knop met extra functionaliteit willen toevoegen, zoals exporteren naar pdf, moeten we de code van de sjabloon in de map wijzigen activa \ kruidenierswinkel_crud \ thema's \ mijnpantilla \ views, in de map van de sjabloon die we gebruiken, wijzigen we de bestanden lijst_sjabloon.php en we voegen toe wat we nodig hebben.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven