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)