Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 6 (Create and Store)

~|icon_table~|elegant-themes~|outline

25.10.2018

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.


  1. Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 1
  2. Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 2 (podešavanje i rute)
  3. Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 3 (Controllers)
  4. Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 4 (Models)
  5. Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 5 (CURD)
  6. Kako napraviti svoju prvu web stranicu sa PHP frameworkom Laravel – Part 6 (Create and Store)