Laravel je PHP frejmvork baziran na MVC arhitekturi. Slede beleške iz tutorijala koje sam nedavno prošao 🙂
Instalacija
Laravel instaliramo pomoću Kompozera:
composer create-project laravel/laravel projekat
Pošto ja ne držim projekte u /srv/http direktorijumu već pravim simboličke linkove, treba obezbediti Apache-u dozvolu za pisanje u određene direktorijume:
storage/app/public
storage/logs
storage/framework/views
storage/framework/sessions
bootstrap/cache
To je najlakše uraditi komandama
chown :http putanja
chmod g+w putanja
kao root.
Kada podesimo virtuelni hosting i lokalni domen, potrebno je da u vhosts fajlu dodamo opciju AllowOverride All za naš document root, u protivnom Mod rewrite neće raditi kako treba.
Struktura fajlova
app/*.php | modeli |
app/Http/Controllers | kontroleri |
app/Http/Controllers/Controller.php | core controller that extends the base controller |
resources/views | prikazi - blade template system |
routes | rute - web.php main route file |
config | config files |
.env | database credentials |
database/migrations | migracije |
public | css js etc |
Rute
routes/web.php je glavni ruter. Spisak ruta može da se vidi sa
php artisan route:list
Po pravilu ruta ne treba da vraća prikaz (view) već je potrebno kreirati funkciju kontrolera koja će da vrati prikaz. Primer:
Route::get('/', 'PagesController@index');//index method of Pages controller
Route::get('/about', 'PagesController@about');
Route::get('/services', 'PagesController@services');
Kontroleri
Kontroleri se nalaze u app/Http/Controllers i kreiramo ih sa
php artisan make:controller MessagesController
Nazivi kontrolera su uvek u pluralu (“Messages” u gornjem primeru). Ako na kraju komande dodamo –resource, dobijamo i sledeće (CRUD) metode:
- index()
- create()
- store(Request $request)
- show($id)
- edit($id)
- update(Request $request, $id)
- destroy($id)
Modeli
Modeli se smeštaju u app direktorijum. Kreiranje modela:
php artisan make:model Message -m
Nazivi modela su za razliku od kontrolera u singularu (“Message” u gornjem primeru). Opcija -m kreira migracione fajlove u database/migrations. Za kreiranje tabela ćemo koristiti
php artisan migrate
a za interaktivni rad sa bazom možemo da pokrenemo
php artisan tinker
Iz Tinkera se izlazi sa quit. Laravel koristi Eloquent ORM – “ActiveRecord implementation for working with databases”.
Podaci o konekciji sa bazom se nalaze u .env fajlu a da bismo uopšte mogli da koristimo npr. MySQL bazu, potrebno je da u php.ini uključimo pdo_mysqli.so.