U današnjem blog postu ćemo pisati o tome kako kreirati stranicu za unos novih albuma zajedno sa formom za unos podataka i nakon toga spremanje tih podataka u našu bazu podataka u tablicu albumi.
Prvo ćemo instalirati paket Laravel Collective Forms & Html.
composer require "laravelcollective/html":"^5.4.0"
Laravel Collective Forms i Html? Šta je to i za šta nam služi?
Paket koji nam pretvara standardni html kod u kod kojeg lakše pišemo i koristimo u laravelu npr.:
<form method="POST" action="http://localhost/albumos/albumi" accept-charset="UTF-8"> //standarni kod za formu </form> {!! Form::open(['route' => 'albumi.store']) !!} // laravel forms kod {!! Form::close() !!}
Kao što vidite gore u primjeru puno je jednostavniji kod i lakši je za uporabu
- Form:: open – Otvara formu
- Route – Link za spremanje naših podataka u našem slučaju albumi.store
- Form:: close – Zatvara formu
Sad je vrijeme da kreirate novu stranicu za prikaz forme za dodavanje albuma:
- Odite u resource -> views -> sites -> albumi
- Krerajte novu datoteku create.blade.php
- Unutar stavite <h3> , dodajte novi album</h3> i spremite promjene
Idemo povezati sada naš izgled sa controllerom:
- Otvorite AlbumsControllers i u create funkciji dodajte kod:
- Return view(sites.albumi.create);
public function create() { return view(sites.albumi.create); }
I to je to!
U prošlom tutorijalu smo kreirali sve naše rute za albume pomoću Route::resource(‘/albumi’,’AlbumsController’) tako da sada nam ostaje samo da provjerimo radi li nam stranica za dodavanje albuma.
- kucajte locahost/albumos/albumi
- trebate dobiti prikaz stranice “Dodajte novi album”
Vidite kako je bilo lako. =) Kada ste počeli dobivati osjećaj kako funkcionira MVC nije problem uopće dodati što god trebate u rute, rutu povežemo sa controllerom i u njemu u funkciji zadamo koju stranicu želimo prikazati.
Idemo napokon dodati formu za dodavanje albuma.
- Otvorite našu datoteku koju smo malo prije kreirali za prikaz forme (create.blade.php)
- Unutar nje dodajte ovaj kod
// Kod za prikaz greške ako postoji @if(count($errors->all())) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif // kod za prikaz forme {!! Form::open(['route' => 'albumi.store']) !!} // kod koji prikazuje label i input za naziv albuma {!! Form::label('Naziv albuma') !!} {!! Form::text('album_name', null) !!} // kod koji prikazuje label i input za ime autora {!! Form::label('Ime autora') !!} {!! Form::text('artist_name', null) !!} <hr> // kod koji prikazuje label i input za ime autora {!! Form::label('Ime autora') !!} {!! Form::text('artist_name', null) !!} {!! Form::submit('Spremi album!') !!} {!! Form::close() !!}
Sada kada refreshate stranicu dobit ćete funkcionalnu formu za unos albuma.
Prvi dio koda provjerava postoji li greška/e prilikom spremanja albuma. Ukoliko postoje, ispisat će nam se ‘lijepa’ lista svih grešaka. Recimo da npr. stavimo da je polje album_name obavezno, pa nam javi grešku prilikom spremanja albuma ako smo to polje ostavili prazno da je to polje obavezno.
Sada kada samo kreirali formu primijetili smo malu grešku u tutorijalu broj 4.
- dodali smo u migracije za tablicu albumi polje song_duration
- to polje pripada songs_table pa samo izrežite to polje iz migracije albums i zaljepite u migraciju songs
- u konzolu kucajte: php artisan migrete:fresh
- gore komanda će nam ponovo u bazi podataka kreirat nove tablice sa našim izmjenama
Dobro, sada kada smo popravili malu grešku idemo napisati kod da nam spremi naše albume u bazu.
- u AlbumsControllers pronađite store funkciju
- unutar te funkcije dodajte ovaj dole kod:
// kod koji koristimo kada želim provjeriti dali je ispravan input kojeg je korisnik unjeo u formi // u našem dole slučaju želimo da su sva polja obavezna i da smiju biti do maksimalno 255 znakova $this->validate($request, [ 'naziv' => 'required|max:255', ]); // kod za kreiranje novog objekta Albumi $item = new Albums(); // popunjavanje objekta sa podacima iz forme, $item je naš album objekt a $request sadržava naše podatke iz forme. $item->albums_name = $request->albums_name; $item->artist_name = $request->artist_name; // spremanje objekta u bazu podataka $item->save(); // kod za redirektanje na prikaz svih albuma nakon spremanja podatka u bazu podataka. return redirect()->route('albumi.index')->with('message','Uspješno ste dodali novi album');
- gore navedeni kod provjerava prvo unesene podatke iz forme sa našim pravilima koje smo zadali
- ukoliko se neki podatak iz input forme ne slaže sa našim pravilima, kod se zaustavlja i vraća nas na našu formu sa prikazom greške
- ukoliko nema greške stvaramo novi album sa podacima iz forme
- i, za kraj preusmjerimo na prikaz albuma uz poruku ‘Uspješno ste dodali novi album’
- navedena poruka trenutno se neće prikazati jer nismo odabrali mjesto za prikaz poruka, a to ćemo napraviti u našoj master.blade.php datoteci
- otvorite gore navedenu datoteku i prije koda za prikaz sadržaja @yield(‘content’) stavite ovaj kod:
@if(Session::has('message')) <div class="alert @if(Session::has('message-type')) alert-danger @else alert-success @endif"> {!! Session::get('message') !!} </div> @endif
Ovaj kod provjerava postoje li neke poruke/notifikacije. Ako postoje onda ispisuje poruku koju smo poslali.
To bi bilo to za ovaj blog post.
Slobodno testirajte i probajte dodavati albume.
U novom blog postu ćemo obraditi temu uređivanja albuma i ako nam stane brisanja albuma.
- Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 1
- Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 2 (podešavanje i rute)
- Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 3 (Controllers)
- Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 4 (Models)
- Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 5 (CURD)
- Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 6 (Create and Store)