[[oktatas:web:angular|< Angular]]
====== Laravel 8 backend ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2021, 2022
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
Ebben a leírásban egy egyszerű Laravel projektet készítünk, ami egy
tömböt ad át az Angular alkalmazásnak.
===== Backend =====
==== Projektek készítése ====
mkdir projekt01
Backend készítése:
cd projekt01
composer create-project laravel/laravel backend
ng new frontend
==== Útvonal beállítása ====
Az útválasztóban generálunk egy
egyszerű tömböt, amely teendő azonosítót és
teendő nevet tartalmaz. Szerkesszük a routes/api.php
fájlt:
Route::get('tasks', function () {
return response()->json(
[
['id' => 1, 'name' => 'Angular tanulás'],
['id' => 2, 'name' => 'Laravel tanulás']
]
);
});
A backend ezzel kész.
===== Frontend =====
==== HttpClientModule ====
A szolgáltatásban HttpClientModule-t fogjuk használni, ezért
kezdjük ezzel.
Töltsük be a **HttpClientModule** nevű modult. Ehhez szerkesszük a
**src/app/app.module.ts** fájt. Vegyük fel a következő import sort:
import { HttpClientModule } from '@angular/common/http';
Regisztráljuk a modult:
imports: [
HttpClientModule
],
==== Szolgáltatás ====
A frontend oldalon egy szolgáltatást fogunk készíteni,
meghívunk egy modult, és az alkalmazás főkomponens-vezérlőosztályát
szerkesztjük.
Hozzuk létre a szolgáltatást:
ng generate service task
Létrejön a **task.service.ts** fájl. Szerkesszük:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class TaskService {
}
Vegyük használatba a HttpClient modult:
import { HttpClient } from '@angular/common/http';
Egészítsük ki a TaskService osztályt:
//...
export class TaskService {
host: string = 'http://localhost:8000/api/';
constructor(private http: HttpClient) { }
getTasks() {
let endpoint: string = 'tasks';
let url = this.host + endpoint;
return this.http.get(url);
}
}
==== task komponens ====
ng generate component task
Vegyük használatba a TaskService osztályt.
Szerkesszük az ''src/app/task/task.component.ts'' állományt.
Elsőként importáljuk:
import { TaskService } from './task.service';
Majd használhatjuk:
//...
export class TaskComponent implements OnInit {
tasks: any;
constructor(private taskService: TaskService) { }
ngOnInit(): void {
this.getTasks();
}
getTasks() {
this.taskService.getTasks().subscribe(tasks => {
this.tasks = tasks;
console.log(this.tasks);
});
}
}
{{ task.id }} |
{{ task.name }} |
A fő komponensben vegyük fel a task komponenst:
===== Működés =====
Indítsuk el a backendet. A backend könyvtáron belül:
php artisan serve
Indítsuk el a frontendet. A frontend könyvtáron belül:
ng server -o
A backend a 8000 porton érhető el. Írjuk be a /api/tasks útvonalat:
localhost:8000/api/tasks
Látnunk kell a tömböt.
A frontend a 4200 porton fut. Írjuk a böngészőbe:
localhost:4200
Az eredményt nézzük meg a böngészőben és annak fejlesztői felületén.
* F12
===== Linkek =====
Van, aki a Laravelt és az Angulart jobban "összevarja":
* https://medium.com/swlh/how-to-setup-laravel-with-angular-d3de171afa03 (2021)