Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 17

Univerzitet u Beogradu

Fakultet organizacionih nauka


Katedra za elektronsko poslovanje

Seminarski rad iz predmeta Elektronsko poslovanje

Laravel CRUD projekat

Nastavnik: prof. Milica Simić Student: Filip Vuković, 2020/76

Beograd, 2023.
Sadrzaj
Uvod
Laravel
Istorijat
Prednosti korišćenja
1. Dependency Menadžment
2. Modularnost
3. Autentifikacija
4. Keširanje
5. Routing
6. Restful Controllers
7. Testiranje i uklanjanje grešaka
8. Template Engine
9. Database Query Builder - Builder upita ka bazi podataka
10. Eloquent ORM
11. File sistem
12. Bezbednost
13. Artisan
14. Migracioni sistem
15. Envoy
16. Lokalizacija
Migracije
Modeli
Kontroleri
Rute
Korisnicko uputstvo

Beograd, 2023.
Uvod

Današnje moderne veb aplikacije zahtevaju efikasno rukovanje podacima, odnosno


mogućnost kreiranja, čitanja, ažuriranja i brisanja informacija u bazi podataka. Da bi se olakšao
proces razvoja takvih aplikacija, razne tehnologije i okviri (frameworks) su razvijeni kako bi
pružili programerima alate za efikasno upravljanje CRUD operacijama. U ovom seminarskom
radu istražuje se jedan od popularnih okvira za razvoj veb aplikacija - Laravel - unutar koga se
razvija aplikacija koja implementira sve CRUD operacije.

Laravel je open-source PHP okvir koji omogućava programerima da brzo i lako razvijaju
kompleksne veb aplikacije. Njegov nastanak datira iz 2011. godine, a od tada je postao izuzetno
popularan zbog svoje jednostavnosti, ekspresivnosti i bogatih funkcionalnosti. Laravel se
zasniva na MVC (Model-View-Controller) arhitekturi, koja pomaže u organizaciji koda i
odvajanju logike aplikacije od prezentacije.

Jedna od najvažnijih funkcionalnosti koje Laravel pruža je mogućnost implementacije svih


CRUD operacija, koje su ključne za upravljanje podacima u aplikacijama. Laravel olakšava rad
sa bazom podataka kroz svoj ORM (Object-Relational Mapping) sloj. ORM omogućava
programerima da koriste modele (models) za predstavljanje entiteta iz baze podataka, kao što
su proizvodi u našem primeru. Kroz modele, programeri mogu izvršavati različite operacije
poput čitanja, pisanja, ažuriranja i brisanja podataka.

Unutar seminarskog rada implementirana je serverska aplikacija koja za cilj ima prikazivanje
proizvoda (naziva, cene i slike), kao i dodavanje, ažuriranje i brisanje proizvoda. Ova aplikacija
pruža praktičan primer kako se koriste Laravel funkcionalnosti za upravljanje podacima. Laravel

Beograd, 2023.
nudi razne alate i koncepte koji olakšavaju ovakve operacije, kao što su Eloquent ORM,
migracije (migrations), rutiranje (routing), kontroleri (controllers) i poglede (views).

Kroz upotrebu Eloquent ORM-a, Laravel omogućava programerima da efikasno komuniciraju sa


bazom podataka koristeći objektno-orijentisane principe. ORM prevodi tabele baze podataka u
modele, a programerima pruža jednostavan API za izvršavanje različitih operacija nad
podacima. Laravel takođe pruža migracije, koje omogućavaju programerima da lako održavaju
šemu baze podataka tokom vremena. Rutiranje omogućava definisanje putanja (URL-ova) koje
mapiraju na odgovarajuće akcije u kontrolerima, dok kontroleri upravljaju logikom obrade
zahteva. Prikaz podataka korisnicima se postiže kroz poglede, koji generišu HTML ili druge
vrste odgovora.

Laravel takođe ima bogatu ponudu paketa koji dodatno proširuju funkcionalnosti okvira. Tu su
paketi za autentifikaciju, autorizaciju, upravljanje sesijama, slanje mejlova i mnoge druge
funkcionalnosti koje su često potrebne u veb aplikacijama.

Laravel je moćan okvir koji omogućava programerima da efikasno upravljaju podacima u veb
aplikacijama. Sa svojim brojnim funkcionalnostima, jednostavnom sintaksom i zajednicom koja
stalno radi na unapređivanju okvira i pružanju podrške programerima, Laravel je postao
popularan izbor za razvoj modernih i skalabilnih veb aplikacija.

Beograd, 2023.
Laravel

Istorijat
Laravel je PHP okvir za razvoj veb aplikacija koji je prvi put objavljen 2011. godine. Njegov
tvorac, Taylor Otwell, želeo je napraviti okvir koji će biti jednostavan za upotrebu, ali
istovremeno pružiti napredne mogućnosti za razvoj aplikacija. Otwell je inspiraciju pronalazio u
drugim popularnim okvirima kao što su Ruby on Rails, ASP.NET MVC i Sinatra.

Od svog prvog izdanja, Laravel je stekao veliku popularnost među PHP programerima. Njegova
jednostavnost i ekspresivnost omogućavaju brzi razvoj veb aplikacija, dok bogat ekosistem
proširenja i alata olakšava razvojni proces. Takođe je poznat po čistoj i elegantnoj sintaksi, koja
olakšava čitanje i održavanje koda.

Jedna od glavnih karakteristika koja je postavila Laravel kao lidera među PHP okvirima je
Eloquent ORM. Eloquent pruža intuitivan način za rad sa bazom podataka kroz objektno-
orijentisani pristup. Programeri mogu koristiti modele za predstavljanje tabela u bazi podataka, a
Eloquent pruža bogat set metoda za izvršavanje upita, definisanje relacija i manipulaciju
podacima.

Pored Eloquent ORM-a, Laravel nudi mnoge druge funkcionalnosti. Na primer, Blade templating
sistem omogućava programerima da lako generišu HTML i koriste ponovno korišćenje delova
koda. Laravel takođe podržava rutiranje, koje omogućava definisanje ruta za različite HTTP
metode i njihovo mapiranje na odgovarajuće akcije u kontrolerima.

Još jedna moćna karakteristika Laravela je njegov koncept migracija. Migracije omogućavaju
programerima da održavaju šemu baze podataka kroz verzije aplikacije. Mogu se koristiti za
dodavanje, izmenu ili brisanje tabela i kolona, čime se olakšava upravljanje strukturom baze
podataka tokom vremena.

Laravel takođe ima bogat ekosistem proširenja koji dodatno proširuju njegove mogućnosti.
Paketi kao što su Laravel Socialite, Laravel Scout, Laravel Passport i mnogi drugi pružaju
gotove rešenja za autentifikaciju, pretragu, API autentifikaciju i druge često korišćene
funkcionalnosti.

Istaknuta komponenta Laravel ekosistema je i Laravel Forge, platforma za upravljanje


serverima i deploy aplikacija. Forge olakšava postavljanje i upravljanje Laravel aplikacija na
serverima, pružajući intuitivan interfejs za konfiguraciju i upravljanje serverima, b bazama
podataka i SSL sertifikatima.

Beograd, 2023.
Laravel je doživeo brojna značajna ažuriranja i poboljšanja tokom godina. Svaka nova verzija
donosi nove funkcionalnosti, poboljšanja performansi i ispravke grešaka. Laravel tim održava
stabilnost i bezbednost okvira, pružajući redovna ažuriranja i podršku zajednici programera.

Sve ove karakteristike su učinile Laravel jednim od najpopularnijih PHP okvira za razvoj veb
aplikacija. On se koristi u velikom broju projekata, od malih web stranica do velikih korporativnih
aplikacija. Laravel ima aktivnu zajednicu programera koja pruža podršku, dokumentaciju i veliki
broj tutorijala i resursa za učenje.

U budućnosti, možemo očekivati dalji razvoj Laravela i dodavanje novih funkcionalnosti. Laravel
istorijat i kontinuirani rast govore o njegovoj snazi i popularnosti među PHP programerima širom
sveta.

Prednosti korišćenja

1. Dependency Menadžment
Dependency Menadžment je jedna od najboljih karakteristika Laravel-a, razumevanje
funkcionalnosti servis kontejnera (IoC - Inversion of Control) je osnova za učenje modernih web
aplikacija. U Laravelu, IoC (inverzija kontrole) ili servisni kontejner - najsnažniji alat za
upravljanje zavisnostima klase.

Dependancy Injection je metoda za uklanjanje strogo kodiranih klasa i njihovo "inject"-ovanje


pomoću alata kao što je Composer.

2. Modularnost
Modularnost je stepen do koga se komponente web aplikacije mogu razdvojiti i ponovo sastaviti.
Strukturu web sajta možete podeliti na različite module, koji rade zajedno, kako bi web aplikacija
bila funkcionalna.

Laravel je dizajniran za pravljenje modularnih aplikacija, čak je i sam Laravel kolekcija


komponenti. Koristeći modularnu strukturu možete jednostavno da dizajnirate i razvijete
aplikaciju velikog obima. Laravel pruža veoma jednostavne smernice za kreiranje modula ili
paketa u Laravelu.

3. Autentifikacija
Autentifikacija je sastavni deo svake moderne web aplikacije. Pisanje autentifikacije u nekom
drugom framework-u može vam oduzeti puno vremena. Laravel pruža autentifikaciju izvan
standardnih okvira, jednostavnom komandom možete stvoriti potpuno funkcionalan sistem za
autentifikaciju.

Laravel takođe nudi korisnu dokumentaciju za implementaciju sopstvene autentifikacije.

Beograd, 2023.
4. Keširanje
Keširanje je tehnika skladištenja podataka na privremenom skladištu i može se brzo preuzeti po
potrebi. Uglavnom se keširanje koristi za povećanje performansi aplikacije. Laravel kešira
gotovo sve podatke od view-skripti do ruta, što pomaže Laravelu da smanji vrieme obrade i na
taj način povećava performanse.

5. Routing
Routing u Laravelu je vrlo lako razumeti i podseća na framework Rubi on Rails. Laravelov
routing može se koristiti za kreiranje RESTful aplikacija s lakoćom. Možete grupisati rute,
imenovati ih, na njih primeniti filtere i vezati ih za svoj model/entitet.

Rute u Laravel-u mogu se koristiti za kreiranje URL adresa za pretraživače sa velikom


fleksibilnošću i kontrolom.

6. Restful Controllers
Laravelovi restful kontroleri omogućavaju vam da odvojite logiku za GET ili POST zahteve.
Takođe, možete da kreirate resource kontrolere - kontroleri vezani za CRUD jednog entiteta.
Kasnije možete vezati resource kontroler za rutu da automatski uslužuje sve CRUD rute.

7. Testiranje i uklanjanje grešaka


Laravel dolazi sa PHPUnit-om, kao dodatkom za testiranje aplikacija. Pri kreiranju Laravela,
posebna pažnja usmerena je na testiranje, tako da Laravel podržava testiranje i uklanjanje
grešaka u većoj meri.

8. Template Engine
U Laravelu ovo je "Blade". Blade pruža helper funkcije za formatiranje podataka prilikom
prikaza. Blade takođe implementira nasleđivanje šablona, koje možete koristiti za kreiranje
kompleksnih layout-a. Blade koristi ekstenziju .blade.php.

9. Database Query Builder - Builder upita ka bazi podataka


Laravelov query builder pruža pogodan način za kreiranje upita ka bazi podataka. Dolazi sa
mnoštvom pomoćnih funkcija koje možete koristiti za filtriranje podataka.

Beograd, 2023.
Sintaksu za izradu upita Laravela lako je razumeti i pisanje upita u bazu podataka je
jednostavno.

10. Eloquent ORM


Laravel je zasnovan na Eloquent ORM-u koji pruža podršku za gotovo sve baze podataka.
Odlično radi sa MySQL i SQLite. Laravel pruža sveobuhvatnu dokumentaciju za sve Eloquent
funkcije.

11. File sistem


Laravel pruža podršku za više file sistema. Možete da koristite lokalni file sistem ili bilo koji na
cloud-u, poput Amazon S3. Možete odabrati koji file sistem želite da koristite promenom opcija u
config/filesystems.php file.

12. Bezbednost
Laravel pruža intuitivan način kreiranja sigurnih web aplikacija. Laravel čuva sve lozinke
šifrovane, umesto kao jednostavne tekstualne lozinke. Laravel koristi BCrytp za sakrivanje
lozinke. Laravel pruža bezbednost od SQL injection napada i izbegava sve korisničke unose
kako bi se izbeglo ubrizgavanje bilo kakve skripte.

13. Artisan
Laravel-ov command line alat zove se Artisan. Laravel dolazi sa desetinama unapred ugrađenih
komandi koje možete koristiti na komandnoj liniji za obavljanje zadataka. Pomoću ovog alata
možete izbeći ponavljajuće zadatake tokom procesa razvoja.

14. Migracioni sistem


Laravel pruža sistem migracije baš kao i Rubi on Rails za stvaranje struktura baza podataka.
Možete koristiti PHP za pisanje migracija, koja će kreirati vašu strukturu baze podataka umesto
korišćenja SQL-a. Pomoću migracija možete da kreirate baze podataka, tabele i indekse. Ako
želite da promenite kolonu u tabeli, ne morate ponovo da kreirate tabelu, umesto toga možete
pokrenuti novu migraciju.

15. Envoy

Beograd, 2023.
Pomoću programa Envoy možete pokrenuti najčešće taskove na udaljenim serverima iz vaše
aplikacije. Takođe vam omogućava da postavite taskove za implementaciju.

16. Lokalizacija

Laravel vam omogućava da kreirate višejezičnu aplikaciju u isto vreme kada pravite aplikaciju.
Pristup stringu na različitim jezicima možete pristupiti koristeći trans() (deprecated od v5.6), __()
ili @lag() helper metodu.

Laravel se pokazao kao najbolji PHP framework zbog svih gore navedenih karakteristika i
stalnog unapređenja. Laravel pomaže u stvaranju moćne aplikacije na jednostavan, ekspresivan
način, i zbog toga je Laravel PHP framework koji se najviše koristi.

Migracije

Migracije u Laravelu su alat koji omogućava programerima da strukturu baze podataka


održavaju i ažuriraju kroz verzionisanje aplikacije. Ovaj alat omogućava lako i kontrolisano
menjanje šeme baze podataka.

Migracije u Laravelu koriste PHP kod za definisanje promena u šemi baze podataka. Svaka
migracija predstavlja jednu promenu, kao što je kreiranje nove tabele, dodavanje ili brisanje
kolone, promena tipa podataka i tako dalje. Laravel čuva informacije o svakoj migraciji koja je
izvršena u bazi podataka, tako da može pratiti koje su migracije već primenjene, a koje još treba
primeniti.

Kada se prvi put kreira Laravel projekat, dolazi sa nekoliko unapred definisanih migracija koje
su deo okvira. Ove migracije obično stvaraju osnovne tabele koje su potrebne za autentifikaciju,
korisnike, sesije i druge osnovne funkcionalnosti. Programer može dodati svoje migracije kako
bi definisao promene specifične za njihovu aplikaciju.

Unutar samog projekta definisana je migracija koja se odnosi na proizvode:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Beograd, 2023.
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('proizvods', function (Blueprint $table) {
$table->increments('Id');
$table->string('Naziv');
$table->string('Cena');
$table->string('Slika');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('proizvods');
}
};

Modeli
Modeli u Laravelu su klase koje predstavljaju tabele u bazi podataka. Modeli omogućavaju
programerima da manipulišu podacima u bazi na jednostavan i intuitivan način. Kroz modele,
možete izvršavati upite nad bazom podataka, čitati, dodavati, ažurirati i brisati podatke.

Unutar projekta definisan je model koji se odnosi na Proizvod i koja direktno definiše identičnu
strukturu podatka o proizvodima iz baze podataka.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

Beograd, 2023.
class Proizvod extends Model
{
protected $primaryKey = 'Id';
use HasFactory;
}

Kontroleri
Kontroleri u Laravelu su klase koje upravljaju logikom obrade zahteva u aplikaciji. Kontroleri
primaju zahteve od korisnika, izvršavaju potrebne akcije i generišu odgovor. Oni igraju ključnu
ulogu u organizaciji i upravljanju logikom aplikacije. Rute ih pozivaju, tako da se uz pomoć njih
izvršavaju određene operacije i funkcije na serverskoj strani prilikom rutiranja unutar aplikacije.

Kontroler unutar razvijene aplikacije sadrži sve funkcionalnosti koje su implementirane u


komunikaciji sa bazom podataka. Funkcije su podeljene na:

1. create - funkcija zadužena za kreiranje novog objekta unutar tabele Proizvod unutar
baze podataka.
2. read - funkcija zadužena za učitavanje podataka iz tabele Proizvod unutar baze
podataka.
3. azurirajObrisi - funkcija zadužena za otvaranje stranice za ažuriranje proizvoda (i
dodatnog učitavanja podataka) i brisanja podataka
4. update - funkcija ažuriranja podataka

Prikaz koda iz kontrolera:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Proizvod;

class Kontroler extends Controller


{
function create(Request $req){
$naziv = $req->get('Naziv');
$cena = $req->get('Cena');
$slika = $req->file('Slika')->getClientOriginalName();

//Pomeranje uploadovane datoteke


$req->file('Slika')->move(public_path('images'), $slika);

Beograd, 2023.
$pr = new Proizvod();

$pr->Naziv = $naziv;
$pr->Cena = $cena;
$pr->Slika = $slika;

$pr->save();

return redirect('/');
}

function read(){
$podaci = Proizvod::all();
return view('insertRead',['data'=>$podaci]);
}

function azurirajObrisi(Request $req){


$id = $req->get('Id');
$naziv = $req->get('Naziv');
$cena = $req->get('Cena');

if($req -> get('Azuriraj') == 'Azuriraj'){


return view('updateview',['Id'=>$id, 'Naziv'=>$naziv, 'Cena'=>$cena]);
}
else{
$prod = Proizvod::find($id);
$prod->delete();
}
return redirect('/');

function update(Request $req){


$id = $req->get('Id');
$naziv = $req->get('Naziv');
$cena = $req->get('Cena');

$pr = Proizvod::find($id);
$pr->Naziv = $naziv;
$pr->Cena = $cena;

$pr->save();

Beograd, 2023.
return redirect('/');

}
}

Rute
Rute u Laravelu su definicije putanja koje ukazuju na odgovarajuće akcije u kontrolerima. Rute
određuju kako će aplikacija reagovati na dolazne zahteve korisnika i naravno, šta će biti izlaz
servera koji se kasnije obrađuje i prikazuje na frontu.

U Laravelu, definisanje ruta se obično vrši u dve glavne datoteke: routes/web.php i


routes/api.php. Datoteka web.php se koristi za definisanje ruta koje se odnose na web
aplikaciju, dok se api.php koristi za definisanje ruta za API.

Unutar kreiranog projekta korišćena je samo web.php datoteka koja izgleda na sledeći način:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Kontroler;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

Route::view('/','insertRead');

Route::post('unesiPodatke',[Kontroler::class, 'create']);
Route::get('/',[Kontroler::class, 'read']);

//Route::view('update','updateView');
Route::get('azurirajObrisi',[Kontroler::class, 'azurirajObrisi']);

Beograd, 2023.
Route::get('update',[Kontroler::class, 'update']);

Beograd, 2023.
Korisnicko uputstvo
Korisnik prilikom pokretanja servera na lokaciji 127.0.0.1:8000/ prvo pristupa početnoj
stranici na kojoj može pregledati sve prethodno unešene proizvode unutar uređene tabele, a
isto tako postoji i dugme pri vrhu strane gde korisnik može inicirati pokretanje Bootstrap modala
(pomoćnog ekrana) na kome se mogu unositi novi proizvodi.

Slika 1 - Početna strana aplikacije

Takođe korisnik ima priliku da klikom na dugmiće za ažuriranje i brisanje pojedinačnih redova
obriše ili ažurira informacije o proizvodu.
Prikaz pomoćnog modala gde korisnik unosi nove proizvode se može videti na narednoj
fotografiji.

Beograd, 2023.
Slika 2 - Pomoćni modal za unos novih proizvoda

Prilikom brisanja proizvoda, dovoljno je korisniku da klikne da dugme za brisanje određenog


reda, nakon čega se sajt dinamički ažurira sa podacima i novo stanje u bazi podataka se
prikazuje.

Prilikom ažuriranja proizvoda, korisnik je preusmeren na novu stranicu na kojoj se automatski


popunjavaju informacije sa podacima o proizvodu koji treba da bude ažuriran. To olakšava
korisniku menjanje informacija jer su prethodne informacije već popunjene u input tagovima.

Beograd, 2023.
Slika 3 - Odvojena stranica na kojoj se ažuriraju podaci o specifičnom proizvodu

Klikom na dugme za ažuriranje podataka, pokreće se funkcionalnost koja menja specifične


podatke unutar tog proizvoda, i vraća korisnika na početnu stranu gde u tabeli za prikazivanje
podataka odmah može videti sve novonastale izmene.

Beograd, 2023.

You might also like