Sunteți pe pagina 1din 20

25.05.

2020 PHP framework Laravel

Site Didactic

ACASĂ
LECŢII
LUCRĂRI
TESTE
REFERINŢE
DESCARCĂ
ELABORĂRILE ELEVILOR

Unități de învățare

MVC framework pentru PHP

Rutarea

Controller-e

Vederi

Modele

Servicii

Testarea

Publicarea proiectului

MVC framework pentru PHP


Noțiune de framework
Majoritatea site-urilor, pe lângă pagini, conțin o serie de module software care îndeplinesc aceleași sarcini tipice: lucrul cu
baza de date, afișarea paginilor bazate pe șabloane, controlul accesului, protecția împotriva atacurilor și altele. Și din
moment ce astfel de sarcini sunt aceleași în toate site-urile, puteți să nu scrieți aceste module de fiecare dată, dar să
utilizați un produs software care le are încorporate.

Astfel de produse software există! Acestea sunt framework-urile. Deja create, framework-urile, oferă dezvoltatorului tot de
ce are nevoie pentru:

lucrul cu baza de date;


generarea de pagini bazate pe șabloane;
controlul accesului;
protecție împotriva atacurilor din rețea;
asistență AJAX, etc.

Dezvoltatorului îi rămâne să instaleze doar framework-ul, să-l configureze (cel puțin să precizeze informațiile necesare
pentru conectarea la baza de date), să scrie și să încorporeze module software în el care să realizeze sarcini specifice
site-ului ce este dezvoltat: procesarea datelor specifice și generarea de pagini specifice bazate pe acesta. Este clar că, din
moment ce dezvoltatorii de framework-uri au făcut o mare parte din munca programatorul Web, site-ul poate fi creat foarte
rapid pe baza acestuia.

Framework-urile sunt create cu scopul de a facilita dezvoltarea de software, oferind programatorilor posibilitatea de a
acorda mai mult timp identificării necesităților software-ului și nu în scopul de a dezlega infinite probleme necesare
obținerii unui sistem funcțional.

În prezent există o mulțime de framework-uri - zeci și poate sute.

Cele mai populare 10 framework-uri cu cod deschis sunt:

1. Laravel
2. CodeIgniter
3. Symfony
4. CakePHP
5. Yii
6. Zend Framework
https://web.ceiti.md/lesson.php?id=17#t4 1/20
25.05.2020 PHP framework Laravel

7. Phalcon
8. FuelPHP
9. PHPixie
10. Slim

Cel mai popular produs de acest fel este Laravel.

Laravel este un framework MVC PHP creat de Taylor Otwell în 2011. Laravel a devenit cel mai popular framework PHP
gratuit, open-source din lume. Deoarece poate trata aplicații web complexe în siguranță, într-un ritm considerabil mai rapid
decât alte framework-uri. Laravel simplifică procesul de dezvoltare prin ușurarea sarcinilor obișnuite, cum ar fi rutarea,
sesiunile, memorarea în cache și autentificarea.

Framework-ul Laravel este numărul unu în programarea web!

Nivelul de interes de-a lungul unei perioade


Întreaga lume. Ultimele 12 luni. Căutare pe internet.

Laravel Symfony Zend CodeIgniter CakePHP

100

75

50

25

Medie 26 mai 2019 24 nov

Întreaga lume Ultimele 12 luni Căutare pe internet

Avantajele framework-ului Laravel:

Laravel este scris în PHP, cel mai popular limbaj de programare a site-urilor dinamice.
Laravel nu are cerințe specifice de sistem și operează/funcționează pe capacitățile aproape la toți furnizorii de
găzduire.
Oferă aproape toată funcționalitatea de bază a site-urilor, inclusiv un sistem puternic de control al accesului,
instrumente pentru trimiterea de e-mail și un mecanism excepțional de migrare.
Toate instrumentele incluse sunt deja configurate în cel mai bun mod pentru majoritatea cazurilor.
Aproape tot ce aveți nevoie poate fi implementat cu un cod de program foarte scurt. Adică există o reducere
suplimentară a intensității forței de muncă.
Există multe biblioteci suplimentare scrise de dezvoltatori terți care extind funcționalitatea framework-ului Laravel.
Laravel include instrumente de prototipare - crearea de semifabricate pentru module software de diferite tipuri, în
care dezvoltatorul site-ului va trebui doar să adauge propriul său cod.

Principiul Model-View-Controller
Un framework reprezintă o unealtă care are la bază o serie de Clase și script-uri PHP, concepute special pentru a facilita
programarea unei aplicații sau a unui website, utilizând conceptul MVC (model-view-controller).

Ce înseamnă MVC:

1. Litera M provine de la cuvântul Model. Un model este o clasa ce are ca parametrii câmpurile dintr-o tabela, ajutând
astfel programatorul să lucreze mult mai ușor cu bazele de date.

https://web.ceiti.md/lesson.php?id=17#t4 2/20
25.05.2020 PHP framework Laravel

2. Litera V provine de la cuvântul View. Un view este acel fișier php pe care îl vede utilizatorul unui site sau al unei
aplicații. Un framework poate transpune codul PHP în cod HTML. Într-un view se pot pune formulare, texte,
scripturi javascript și tot ceea ce este nevoie pentru a facilita experiența vizuală a utilizatorului final.
3. Litera C provine de la cuvântul Controller. Un controller, așa cum se înțelege și din denumirea lui, controlează
acțiunile unei aplicații sau ale unui site. Într-un controller se vor defini acțiunile, drepturile de acces și alte funcții
necesare pentru o bună funcționare a aplicației. Spre exemplu, pentru a defini un view din aplicație, este necesară
definirea unei funcții în care putem face interogări, adăugări în baza de date în funcție de formularul din view.

Diagrama arhitecturii MVC

Cum funcționează

Schema de funcționare a unei aplicații modelate după arhitectura MVC decurge, în linii mari, în felul următor:

1. User-ul interacționează cu interfața (exemplu: apasă un buton la tastatură).


2. Controller-ul primește acțiunea apăsării butonului și o convertește într-o acțiune pe înțelesul model-ului.
3. Controller-ul notifică model-ul de acțiunea utilizatorului, urmând de obicei o schimbare a stării model-ului
(exemplu: model-ul reîmprospătează starea câmpului de adresă).
4. Un view interoghează model-ul pentru a genera o interfață corespunzătoare (exemplu: view-ul afișează noua adresă
alături de cea veche alături de un buton de confirmare).
5. Interfața așteaptă acțiuni suplimentare din partea utilizatorului, ciclul reluând-se.

Aplicații web care pot fi dezvoltate folosind framework-ul Laravel.

https://web.ceiti.md/lesson.php?id=17#t4 3/20
25.05.2020 PHP framework Laravel

Instalare și configurare web server local


Pentru instalare și configurare web server local vom folosi pachetul XAMPP, o aplicație care include serverul web Apache,
interpretorul PHP, sistemul de gestiune a bazelor de date MySQL și aplicația de administrare a bazelor de date
phpMyAdmin. Pachetul XAMPP poate fi descărcat de pe site-ul dezvoltatorului https://www.apachefriends.org pentru
platformele Windows, Linux și OS X. Așa că vom instala framework-ul Laravel în XAMPP.

Mediul de dezvoltare a proiectelor PHP


Întrucât sintaxa limbajului PHP este relativ simplă, iar structura codului sursă nu este una impusă, codul PHP poate fi scris
cu orice editor text, cum ar fi Notepad. În realitate, acest lucru este posibil doar pentru scripturile de câteva linii de cod;
pentru fișiere mari și complexe, un editor PHP specializat este aproape indispensabil. Exista mai multe editoare de cod-
sursă ce pot fi folosite pentru PHP, de la IDE-uri complexe până la editoare simple. Toate oferă highlight pentru cuvintele
cheie, completare automată a instrucțiunilor, facilități avansate de căutare și altele. Puteți folosi pe oricare dintre ele, în
funcție de nevoile voastre.

1. Notepad ++ - un editor de coduri sursă, care indeplinește foarte bine și funcțiile Notepad-ului din windows.
Limbajele de programare suportate sunt foarte variate. Programul nu necesita resurse hardware mai mari decat
Notepad-ul din Windows. Notepad++ - un Notepad mult mai complex. Proiectul include foarte multe plug-in-uri
ajutatoare pentru anumite editari complexe. Softul este gratuit (licenta GPL).
2. Sublime Text - Sublime Text 3 este un editor de text care e la modă de ceva timp, datorită faptului că reușește să
îmbine o mulțime de aspecte pe care ți le-ai dori de la un editor într-un program mic, dar foarte puternic. Sublime
Text 3 folosește un sistem de API Python pentru plugin-uri și teme, care sunt incredibil de folositoare.
3. PhpStorm este un IDE comercial, multi-platformă, pentru PHP, construit de compania JetBrains din Republica
Cehă. PhpStorm oferă un editor pentru PHP, HTML și JavaScript cu analize de cod din zbor, prevenirea erorilor și
refactorii automate pentru codul PHP și JavaScript.
4. Visual Studio Code este un editor de cod sursă dezvoltat de Microsoft pentru Windows, Linux și macOS. Include
suport pentru depanare, control Git încorporat și GitHub, evidențierea sintaxei, completarea inteligentă a codului.
Este foarte personalizabil, permițând utilizatorilor să schimbe tema, comenzile rapide de la tastatură, preferințele și
https://web.ceiti.md/lesson.php?id=17#t4 4/20
25.05.2020 PHP framework Laravel

să instaleze extensii care adaugă funcționalitate. Codul sursă este liber și open source și este eliberat sub licența MIT
permisivă. În Studiul pentru dezvoltatori Stack Overflow 2019, Visual Studio Code a fost clasat cel mai popular
instrument de mediu pentru dezvoltatori, 50,7% din 87.317 respondenți au susținut că îl folosesc.

Composer pentru extensiile MVC


În PHP majoritatea codului îl scriem noi, însă utilizarea librăriilor deja existente este un avantaj. Putem să folosim un
număr consistent din ele - și să scriem cod mult mai stabil și securizat.

Dar, există o problemă. Suntem nevoiți să instalăm de fiecare dată librariile manual, să le includem manual în fișiere - un
adevarat chin.

Asemănător package manager-elor pentru sistemele de operare, gen cel pentru Ubuntu, are și PHP package manager-ul
lui. Aceasta înseamnă că îți instalează el librariile care le dorești, configurează un autoload pentru ele, adică nu mai
trebuie să le incluzi manual, se includ doar la momentul când ai nevoie de ele.

Package manager-ul din PHP este Composer cu lista de pachete disponibilă la adresa packagist.org. Toate librăriile care
le vei folosi sunt deja acolo.

Instalul composer-ului este disponibil la adresa getcomposer.org/doc/00-intro.md.

Cum lucrează Composer-ul

Instalerea MVC framework Laravel în XAMPP


Pentru a instala Laravel, se folosește composer în CMD (Command Line Interface). Pentru a deschide Command Line
Interface în windows, apăsați butonul Start și scrieți "cmd". Prin urmare, înainte de a utiliza Laravel, asigurați-vă că aveți
Composer-ul instalat pe mașina dvs.

1. Prin instalatorul Laravel

Mai întâi, descărcați programul de instalare Laravel folosind Composer:

composer global require laravel/installer

https://web.ceiti.md/lesson.php?id=17#t4 5/20
25.05.2020 PHP framework Laravel
Odată instalată, comanda laravel new va crea o nouă instalare Laravel în directorul specificat. De exemplu, laravel
new blog va crea un director numit blog care conține o instalație Laravel proaspătă, cu toate dependențele Laravel deja
instalate:

2. Prin comanda create-project

În mod alternativ Laravel-ul poate fi instalat utilizând Composer-ul prin comanda create-project

I. Instalarea versiunii următoare, care este în stadiu de dezvoltare a framework-ului Laravel:

composer create-project laravel/laravel project_name dev-develop

- în directorul "C:/xampp/htdocs/", composer-ul va crea un director numit "project_name" cu framework-ul Laravel iar
instrucțiunea "dev-develop" specifică să fie instalată versiunea următoare, care este în stadiu de dezvoltare.

II. Instalarea versiunii curente stabilă a framework-ului Laravel:

composer create-project –-prefer-dist laravel/laravel project_name

- în directorul "C:/xampp/htdocs/", composer-ul va crea un director numit "project_name" cu framework-ul Laravel iar
instrucțiunea "–-prefer-dist" specifică să fie instalată versiunea curentă stabilă.

sau folosește doar comanda "create-project" cu nimic altceva:

composer create-project laravel/laravel project_name

https://web.ceiti.md/lesson.php?id=17#t4 6/20
25.05.2020 PHP framework Laravel

Pentru a testa cu XAMPP integritatea instalării, porniți XAMPP-ul, apoi în browser accesați:
localhost/project_name/public

Va afișa o pagină ca în această imagine:

Alternativ, poți folosi serverul web incorporat în PHP. În interfața Command Line navigați către directorul cu proiectul
Laravel, apoi inițiați următoarea instrucțiune în linia de commandă:

php artisan serve

După executarea comenzii de mai sus, veți vedea afișat ca în următoarea imagine:

La apăsarea combinației de taste ctrl + c va opri serverul și va returna controlul în linia de comandă.

În mod implicit, serverul HTTP va asculta portul 8000. Cu toate acestea, dacă acel port este deja în uz sau doriți să serviți
mai multe aplicații în acest fel, puteți să specificați ce port să utilizați, adăugând argumentul --port:

php artisan serve --port=8080

Structura proiectelor MVC


Aici aveți o imagine cu structura directoarelor pentru Laravel 7.0-dev:

https://web.ceiti.md/lesson.php?id=17#t4 7/20
25.05.2020 PHP framework Laravel

Directorul app în Laravel conține componentele Models și Controllers.

Models sunt create direct în directorul app, pe când Controllers și Middlewares sunt create în directoarele lor respective
în directorul Http. Views în Laravel (template-urile redate ca HTML) sunt create în directorul resources/views.

Directorul resources conține fișiere pentru diferite resurse, cum ar fi: LESS și Sass, fisierele de limbă și localizare și
Template-uri care sunt rendate ca HTML.

Directorul storage conține depozitul aplicației (cum ar fi fisiere uploadate), depozitul Framework-ului (în framework) sunt
stocate fișiere cache și logs.

Routing-ul pentru controllers este gestionat de fișierul web.php aflat în directorul routes.

Directorul vendor conține dependențele pentru composer.

În fișierul .env se pot adăuga datele pentru conectare la o bază de date mysql (DB_DATABASE, DB_USERNAME,
DB_PASSWORD).

"locale-ul", time zone, și alte configurații se pot seta în fișierul config/app.php.

Directorul public este documentul root al aplicației în browser. Conține activele pentru pagină în browser, cum ar fi
JavaScript, CSS, Imagini, etc.

Pentru a rula aplicația Laravel, se accesează în browser directorul public.

Configurare de mediu
Configurare baza de date - Creare baza de date:

https://web.ceiti.md/lesson.php?id=17#t4 8/20
25.05.2020 PHP framework Laravel
Deschideți browser-ul web și tastați localhost/phpmyadmin sau 127.0.0.1/phpmyadmin (vă va redirecționa către pagina de
control phpMyAdmin). Faceți clic pe baze de date și introduceți numele bazei de date, apoi faceți clic pe Creare, ne va
crea baza de date.

Configurare baza de date - Editați .env:

Deschideți fișierul .env

Găsiți următoarele linii și introduceți detaliile dvs. și salvați-le.

Denumirea aplicației

Utilizați următoarea comandă pentru a denumi aplicația:


https://web.ceiti.md/lesson.php?id=17#t4 9/20
25.05.2020 PHP framework Laravel
php artisan app:name Your_Application_Name

Mod de întreținere - Start

php artisan down

Mod de întreținere - Stop

php artisan up

Afișarea conținutului dorit


Odată ce cunoașteți arhitectura Laravel și structura directoarelor și fișierelor, puteți edita și crea fișiere pentru a afișa în
browser conținutul pe care îl vreți.

Deschideți interfața Command Line (CMD în Windows), navighează către directorul unde este instalat framework-ul
Laravel și rulează această comandă pentru a porni serverul php integrat:

php artisan serve

Dacă accesezi acest URL în browser:

http://localhost:8000/

Va arăta pagina principală predefinită. Pentru a schimba conținutul din această pagină, deschide fișierul
welcome.blade.php (în directorul resources/views), și editați conținutul cu orice cod php, html, css, javascript care vreți.

- De exemplu, adăugați acest cod în fișierul welcome.blade.php:

1 <!doctype html>
2 <html lang="{{app()->getLocale()}}">
3 <head>
4 <meta charset="utf-8">
5 <title>Hello</title>
6 </head>
7 <body>
8 <h1>Hello to Me</h1>
9 <p>Laravel {{App::VERSION()}}</p>
10 </body>
11 </html>

Acum, dacă accesați //localhost:8000 din nou în browser, veți vedea o pagină ca în această imagine:

Partea .blade în numele fișierului welcome.blade.php este pentru utilizare Blade Templates. Dacă redenumești acel fișier
în welcome.php, va afișa conținutul fără a interpreta codul Templates de tip Blade.

Rutarea
Principiile rutării

https://web.ceiti.md/lesson.php?id=17#t4 10/20
25.05.2020 PHP framework Laravel
Funcția de bază a oricărui framework este de a prelua cereri de la un utilizator și de a furniza răspunsuri, de obicei prin
HTTP(S). Aceasta înseamnă că definirea rutelor unei aplicații este primul și cel mai important lucru de abordat atunci când
înveți un framework. Fără rute, nu aveți posibilitatea de a interacționa cu utilizatorul final.

În acest capitol vom examina rutele din Laravel și vom arăta cum să le definim, cum să le îndreptăm către codul pe care ar
trebui să-l execute și cum să utilizeze instrumentele de rutare ale Laravel pentru a face față unei game diverse de
necesități de rutare.

Definirea rutelor
Într-o aplicație Laravel, veți defini rutele dvs. „web” în routes/web.php și rutele dvs. API în routes/api.php. Rutele web sunt
cele care vor fi vizitate de utilizatorii finali; Rutele API sunt cele pentru API-ul dvs., dacă aveți. Deocamdată, ne vom
concentra pe rutele din routes/web.php.

Cel mai simplu mod de a defini o rutare este de a potrivi o cale (de exemplu, /) cu o închidere, așa cum se vede în
exemplul următor(definirea de bază a rutării):

1 // routes/web.php
2 Route::get('/', function () {
3 return 'Hello, World!';
4 });

Multe site-uri web simple pot fi definite în întregime în fișierul rutelor web. În exemplul următor sunt ilustrate câteva rute
GET simple combinate cu unele șabloane:

1 Route::get('/', function () {
2 return view('welcome');
3 });
4 Route::get('about', function () {
5 return view('about');
6 });
7 Route::get('products', function () {
8 return view('products');
9 });
10 Route::get('services', function () {
11 return view('services');
12 });

Rutele definite în routes/web.php pot fi accesate întroducând URL-ul rutei definite în browserul dvs. De exemplu, puteți
accesa următoarea rută navigând pe localhost:8000/about în browser:

Metode HTTP
Dacă nu sunteți familiarizat cu ideea metodelor HTTP, citiți în acest capitol pentru mai multe informații, dar deocamdată
știți că fiecare cerere HTTP are un „verb” sau o acțiune, împreună cu acesta. Laravel vă permite să vă definiți rutele pe
baza verbului folosit; cele mai frecvente sunt GET și POST, urmate de PUT, DELETE și PATCH. Fiecare metodă
comunică un lucru diferit serverului și codului dvs. despre intențiile apelantului.

Verbe de rutare
Observați că folosim Route::get în definirea rutelor noastre. Aceasta înseamnă că îi spunem lui Laravel să se
potrivească numai pentru aceste rute atunci când cererea HTTP folosește acțiunea GET. Dar dacă este un formular
POST, sau poate unele scripturi JavaScript care trimit cereri PUT sau DELETE? Există câteva alte opțiuni pentru metodele
date de a apela la o definiție a rutei, așa cum este ilustrat în exemplul următor:

1 Route::get('/', function () {
2 return 'Hello, World!';
3 });
4 Route::post('/', function () {});
5 Route::put('/', function () {});
6 Route::patch('/', function () {});
7 Route::delete('/', function () {});
8 Route::options('/', function () {});

Uneori poate fi necesar să definiți o rută care răspunde la mai multe verbe HTTP. Puteți face acest lucru folosind metoda
match. Sau puteți chiar să definiți o rută care răspunde la toate verbele HTTP folosind metoda any:

https://web.ceiti.md/lesson.php?id=17#t4 11/20
25.05.2020 PHP framework Laravel
1 Route::match(['get', 'post'], '/', function () {});
2 Route::any('/', function () {});

Redirecționare rute
Dacă definiți o rută care redirecționează către un alt URI, puteți utiliza metoda Route::redirect. Această metodă oferă o
comandă rapidă, astfel încât nu trebuie să definiți o rută completă sau un controler pentru a efectua o redirecționare
simplă:

1 Route::redirect('/here', '/there');

Rutele View
Dacă ruta trebuie doar să returneze o vizualizare, puteți utiliza metoda Route::view. Ca și metoda redirecționării, această
metodă oferă o scurtătură simplă, astfel încât nu trebuie să definiți o rută completă sau un controller. Metoda view acceptă
un URI ca prim argument și un nume de vizualizare ca al doilea argument. În plus, puteți furniza o serie de date pentru a
trece la vizualizare ca un al treilea argument opțional:

1 Route::view('/welcome', 'welcome');
2
3 Route::view('/welcome', 'welcome', ['name' => 'Ion']);

Parametrii rutelor
Parametri obligatorii

Uneori, va trebui să capturați segmente ale URI pe ruta dvs. De exemplu, poate fi necesar să capturați un ID al
utilizatorului de pe adresa URL. Puteți face acest lucru prin definirea parametrilor de traseu:

1 Route::get('user/{id}', function ($id) {


2 return 'User '.$id;
3 });

Puteți defini parametri de rută cât de mulți sunt necesari pentru ruta dvs.:

1 Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {


2 //
3 });

Parametrii sunt întotdeauna încadrați în {} și sunt alcătuite din caractere alfabetice și poate să nu conțină caracterul -. În
loc să folosiți caracterul -, folosiți caracterul subliniere (_).

Rute personalizate
Puteți denumi rute permit generarea convenabilă de adrese URL sau redirecționări pentru rute specifice. Puteți specifica
un nume pentru o rută prin încadrarea metodei numelui în definiția rutei:

1 Route::get('user/profile', function () {
2 //
3 })->name('profile');

Puteți specifica, de asemenea, numele rutelor pentru acțiunile controlorului:

1 Route::get('user/profile', 'UserProfileController@show')->name('profile');

Generarea adreselor URL către rutele denumite

https://web.ceiti.md/lesson.php?id=17#t4 12/20
25.05.2020 PHP framework Laravel
După ce ați atribuit un nume unei rute date, puteți utiliza numele rutei atunci când generați adrese URL sau redirecționări
prin intermediul funcției de rută globală:

1 // Generating URLs...
2 $url = route('profile');
3
4 // Generating Redirects...
5 return redirect()->route('profile');

Controller-e
În cadrul MVC, litera „C” reprezintă Controller. Acționează ca o direcționare a traficului între vizualizări și modele.
Controller-ele grupează logica de gestionare a cererilor aferente într-o singură clasă. Controlerele sunt stocate în
directorul app/Http/Controllers.

Crearea unui controler


Deschideți promptul sau terminalul de comandă bazat pe sistemul de operare pe care îl utilizați și tastați următoarea
comandă pentru a crea controller folosind Artisan CLI (Interfața liniei de comandă).

php artisan make:controller controller_name

Înlocuiți controller_name cu numele controlerului. Fișierul creat poate fi văzut în mapa app/Http/Controllers. Veți vedea
că unele coduri de bază au fost deja făcute pentru dvs. și puteți adăuga codurile personalizate. Controller-ul creat poate fi
apelat din routes.php prin următoarea sintaxă:

1 Route::get(‘base URI’,’controller@method’);

Exemplu

Pasul 1 - Executați următoarea comandă pentru a crea MyController.

php artisan make:controller MyController

Pasul 2 - După executarea cu succes, veți primi următorul mesaj:

Pasul 3 - Va crea un nou fișier numit MyController.php în directorul app/Http/Controllers cu un cod de bază Controller-ul
creat extinde clasa Controller de bază inclusă cu Laravel.

1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
7 class MyController extends Controller
8 {
9 //
10 }

Acest fișier MyController.php poate fi creat manual și apoi de adăugat codul de mai sus.

https://web.ceiti.md/lesson.php?id=17#t4 13/20
25.05.2020 PHP framework Laravel

Folosire Rute cu Controller


În clasa MyController putem crea metode care pot fi folosite în rute (în web.php).

Pasul 1 - Creați o metodă publică numită index() care primește obiectul Request și returnează o pagină view cu date
pentru template.

1 namespace App\Http\Controllers;
2 use Illuminate\Http\Request;
3
4 class MyController extends Controller {
5
6 //receives the request objet; returns a simple page using view
7 public function index(Request $req){
8
9 //set array with keys to be passed to view() for template
10 $data =[
11 'uri'=>$req->path(),
12 'url'=>$req->url(),
13 'method'=>$req->method()
14 ];
15
16 return view('index', $data);
17 }
18 }

Pasul 2 - În directorul resources/views creați un fișier index.blade.php cu ceva conținut, de exemplu:

1 <!doctype html>
2 <html lang="{{app()->getLocale()}}">
3 <head>
4 <meta charset="utf-8">
5 <title>Home Page</title>
6 </head>
7 <body>
8 <h1>Home page</h1>
9 URI: {{$uri}}<br>
10 URL: {{$url}}<br>
11 METHOD: {{$method}}
12 </body>
13 </html>

Pasul 3 - Folosește metoda MyController index() în route-ul pentru pagina principală "/" (în routes/web.php ștergeți route-
ul get() existent pentru '/'), adăugați:

1 Route::name('home')->get('/', 'MyController@index');

Pasul 4 - Deschideți bowser-ul și accesați localhost:8000, va afișa conținutul creat în index.blade.php, o pagină ca
imaginea de mai jos:

Controller Resursa

https://web.ceiti.md/lesson.php?id=17#t4 14/20
25.05.2020 PHP framework Laravel
Controller-ul Resursa (Resource Controller) este o clasă Controller care conține toate metodele pentru a efectua
operațiuni CRUD (Create, Read, Update, Delete).

Pentru a crea un resource controller folosiți următoarea comandă în CLI:

php artisan make:controller ControllerName --resource

De exemplu, să creăm un controller care se ocupă de toate cererile HTTP pentru photos stocate de o aplicație Laravel.

Pasul 1 - Scrieți următoarea comandă în CLI:

php artisan make:controller PhotoController --resource

Se va crea un fișier PhotoController.php în directorul app/Http/Controllers, cu o clasă care extinde clasa Controller de
bază, și câte o metodă pentru fiecare din operațiunile CRUD valabile.

Pasul 2 - Adăugați un șir simplu la return în fiecare metodă a clasei PhotoController pentru a face teste.

Copiați următorul cod în fișierul PhotoController.php:

1 <?php
2
3 namespace App\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
7 class PhotoController extends Controller
8 {
9 /**
10 * Display a listing of the resource.
11 *
12 * @return \Illuminate\Http\Response
13 */
14 public function index()
15 {
16 return 'index';
17 }
18
19 /**
20 * Show the form for creating a new resource.
21 *
22 * @return \Illuminate\Http\Response
23 */
24 public function create()
25 {
26 return 'create';
27 }
28
29 /**
30 * Store a newly created resource in storage.
31 *
32 * @param \Illuminate\Http\Request $request
33 * @return \Illuminate\Http\Response
34 */
35 public function store(Request $request)
36 {
37 return 'store, uri: ' . $request->path();
38 }
39
40 /**
41 * Display the specified resource.
42 *
43 * @param int $id
44 * @return \Illuminate\Http\Response
45 */
46 public function show($id)
47 {
48 return 'show, id:' . $id;
49 }
50
51 /**
52 * Show the form for editing the specified resource.
53 *
54 * @param int $id
55 * @return \Illuminate\Http\Response
56 */
57 public function edit($id)
58 {
59 return 'edit, id:' . $id;
60 }
61
62 /**
63 * Update the specified resource in storage.
https://web.ceiti.md/lesson.php?id=17#t4 15/20
25.05.2020 PHP framework Laravel
64 *
65 * @param \Illuminate\Http\Request $request
66 * @param int $id
67 * @return \Illuminate\Http\Response
68 */
69 public function update(Request $request, $id)
70 {
71 return 'update, uri: ' . $request->path() . '-id: ' . $id;
72 }
73
74 /**
75 * Remove the specified resource from storage.
76 *
77 * @param int $id
78 * @return \Illuminate\Http\Response
79 */
80 public function destroy($id)
81 {
82 return 'destroy, id: ' . $id;
83 }
84 }

Pasul 3 - Adaugați următoarea linie de cod în fișierul routes/web.php.

1 Route::resource('photo', 'PhotoController');

Această singură instrucțiune crează multiple Route pentru a se ocupa de mai multe tipuri de apelări.

Tip-Apel URI Actiune Nume Route


GET /photo index photo.index
GET /photo/create create photo.create
POST /photo store photo.store
GET /photo/{photo} show photo.show
GET /photo/{photo}/edit edit photo.edit
PUT/PATCH /photo/{photo} update photo.update
DELETE /photo/{photo} destroy photo.destroy

Notă: Puteți înregistra mai multe controlere de resurse simultan:

1 Route::resources([
2 'photos' => 'PhotoController',
3 'posts' => 'PostController'
4 ]);

Pasul 4 - Încercați să executați URL-urile din următorul tabel:

URL Descriere Output


Executa metoda index() din
http://localhost:8000/photo index
PhotoController.php
Executa metoda create() din
http://localhost:8000/photo/create create
PhotoController.php
Executa metoda show() din
http://localhost:8000/photo/1 show
PhotoController.php
Executa metoda edit() din
http://localhost:8000/photo/1/edit edit
PhotoController.php

Deoarece formularele HTML nu pot face cereri PUT, PATCH (pentru update) sau DELETE (pentru ștergere), va trebui să
adaugați un câmp ascuns, cu name='method_' pentru a indica aceste tipuri de cereri HTTP. Funcția method_field() poate
crea automat acest câmp:
https://web.ceiti.md/lesson.php?id=17#t4 16/20
25.05.2020 PHP framework Laravel
{{method_field('PUT')}}

Pentru a afla ce route-uri sunt valabile în aplicația curentă, rulează în CLI următoarea comandă:

php artisan route:list

Se va afișa o listă cu toate route-urile valabile.

Vederi
În cadrul MVC, litera „V” reprezintă Views(Vederi). Vederile conțin HTML-ul (difuzat) de aplicația dvs. Vederile separă
logica aplicației de logica de prezentare. Fișierele View au extensia .php sau .blade.php dacă se folosește șabblonul Blade
și pot conține cod HTML, CSS, JavaScript și PHP. Vederile sunt stocate în directorul resource/view. O vedere simplă ar
putea arăta astfel:

1 <!-- View stored in resources/views/greeting.blade.php -->


2
3 <html>
4 <body>
5 <h1>Hello, {{ $name }}</h1>
6 </body>
7 </html>

Pentru a vizualiza acest View definim următoarea rută în fișierul web.php din directoriul routes:

1 Route::get('/', function () {
2 return view('greeting', ['name' => 'Victoria']);
3 });

Primul argument transmis asistentului de vizualizare corespunde numelui fișierului de vizualizare din directorul
resouce/view. Al doilea argument este un array de date care ar trebui să fie puse la dispoziția vederii. În cazul dat, se
transmite variabila nume, care este afișată în vedere folosind sintaxa Blade.

Vederile se pot afla de asemenea și în subdirectoarele directorului resources/views. Notarea „punct” poate fi utilizată
pentru a face referire la vederile din subdirector. De exemplu, dacă vederea dvs. este stocată în
resources/views/admin/profile.blade.php, este posibil să faceți referire astfel:

1 return view('admin.profile', $data);

Determinarea dacă o vedere există

Dacă trebuie să determinați dacă există o vedere, puteți utiliza fațada View. Metoda exists va returna true dacă vederea
există:

1 use Illuminate\Support\Facades\View;
2
3 if (View::exists('emails.customer')) {
4 //
5 }

Transmiterea datelor vederii

După cum ați văzut în exemplele anterioare, este posibil să transmiteți un tablou de date către vederi:

1 return view('greeting', ['name' => 'Victoria']);

La transmiterea informațiilor în acest mod, datele ar trebui să fie un tablou de perechi cheie/valoare. În interiorul vederii,
puteți accesa fiecare valoare folosind cheia corespunzătoare, cum ar fi:

1 <?php echo $key; ?>

https://web.ceiti.md/lesson.php?id=17#t4 17/20
25.05.2020 PHP framework Laravel
Ca o alternativă la transmiterea unui tablou complet de date funcției view, puteți utiliza metoda with pentru a adăuga părți
de date individuale în vizualizare:

1 return view('greeting')->with('name', 'Victoria');

Sau

1 return view('greeting')->with('name', 'Victoria')->with('age','18')->with('email', 'victoria@gmail');

Sau

1 return view('greeting')->with(['name'=>'Victoria',
2 'age'=>'18',
3 'email'=>'victoria@gmail']);

Șablonul Blade
Blade este un motor simplu, dar puternic de șablonizare, prevăzut de Laravel. Spre deosebire de alte motoare populare
de șablonizare PHP, Blade nu vă restricționează să utilizați codul PHP simplu în vederile dvs. De fapt, toate vederile
Blade sunt compilate în cod PHP simplu și sunt memorate în cache până când sunt modificate, ceea ce înseamnă că
Blade supraîncarcă "zero" aplicația ta. Fișierele de vizualizare Blade folosesc extensia de fișier .blade.php și sunt de
obicei stocate în directorul resources/view.

Moștenire în șabloane

Două dintre avantajele principale ale utilizării Blade-ului sunt moștenirile și secțiunile șabloane. Pentru a începe, să
aruncăm o privire la un exemplu simplu. În primul rând, vom examina o structură a paginii "master". Deoarece majoritatea
aplicațiilor web păstrează același șablon general pe diverse pagini, este convenabil să definiți acest șablon ca o singură
vedere Blade:

1 <!-- Stored in resources/views/layouts/app.blade.php -->


2
3 <html>
4 <head>
5 <title>App Name - @yield('title')</title>
6 </head>
7 <body>
8 @section('sidebar')
9 This is the master sidebar.
10 @show
11
12 <div class="container">
13 @yield('content')
14 </div>
15 </body>
16 </html>

După cum vedeți, acest fișier conține marcaj HTML tipic. Directiva @section, așa cum sugerează și numele, definește o
secțiune de conținut, în timp ce directiva @yield este utilizată pentru a afișa conținutul unei anumite secțiuni.

Acum că am definit un șablon pentru aplicația noastră, să definim o pagină copil care moștenește acest șablon.

Extinderea șablonului

Când definiți o vedere pentru copii, utilizați directiva Blade @extends pentru a specifica ce șablon ar trebui să
"moștenească" vederea copil. Vederea care extind un șablon Blade pot injecta conținut în secțiunile șablonului folosind
directivele @section. Nu uitați, așa cum se vede în exemplul de mai sus, conținutul acestor secțiuni va fi afișat în șablon
folosind @yield:

1 <!-- Stored in resources/views/child.blade.php -->


2
3 @extends('layouts.app')
4
5 @section('title', 'Page Title')
6
7 @section('sidebar')

https://web.ceiti.md/lesson.php?id=17#t4 18/20
25.05.2020 PHP framework Laravel
8 @parent
9
10 <p>This is appended to the master sidebar.</p>
11 @endsection
12
13 @section('content')
14 <p>This is my body content.</p>
15 @endsection

Unde directivele:

@extends('layouts.app') - extinde șablonul "app" stocat în directorul layouts/.


@section('title', 'Page Title') - definește valoarea pentru secțiunea titlu.
@section('sidebar') - definește o secțiune sidebar în această pagină copil.
@parent - afișează conținutul secțiunii sidebar, definit în layout-ul master "app".
@endsection - închide secțiunea.
@section('content') - crează conținut pentru @yield('content') definit în șablonul "app".

Definiți următoarea rută în fișierul web.php:

1 Route::get('/child', function () {
2 return view('child');
3 });

Dacă accesați 127.0.0.1:8000/child în browser, veți vedea o pagină ca în această imagine:

Middleware

https://web.ceiti.md/lesson.php?id=17#t4 19/20
25.05.2020 PHP framework Laravel
Middleware acționează ca un intermediar între cerere și răspuns, asigură un mecanism pentru filtrare cereri HTTP. Spre
exemplu Laravel include un middleware care verifică dacă utilizatorul aplicației este autentificat sau nu. Dacă utilisatorul
este autentificat, el va fi redirecționat către homepage, altfel va fi redirecționat către pagina de login.

Există câteva middleware incluse în framework-ul Laravel, inclusiv middleware pentru autentificare și protecție CSRF.
Toate aceste middleware-uri sunt localizate în directorul app/Http/Middleware/.

Definire Middleware

Poți crea propriul middleware pentru a filtra și a prelucra cererile înainte de a returna raspunsuri. Pentru a crea un
Middleware poți folosi comanda artisan make:middleware în CLI.

php artisan make:middleware MiddlewareName

- Exemplu, în interfața Command Line, navighează către directorul cu proiectul Laravel și execută această comandă
pentru a crea un middleware CheckAge:

php artisan make:middleware CheckAge

Aceasta va crea un nou fișier numit CheckAge.php în directorul app/Http/Middleware/ cu o clasă CheckAge și o metodă
handle():

1 <?php
2
3 namespace App\Http\Middleware;
4
5 use Closure;
6
7 class CheckAge
8 {
9 /**
10 * Handle an incoming request.
11 *
12 * @param \Illuminate\Http\Request $request
13 * @param \Closure $next
14 * @return mixed
15 */
16 public function handle($request, Closure $next)
17 {
18 if($request->age <=200) echo $request->age; //added for tests
19 return $next($request);
20 }
21 }

© Realizare Andrei CIOBANU 2009-2020

https://web.ceiti.md/lesson.php?id=17#t4 20/20

S-ar putea să vă placă și