En aquest tema, aprendrem a implementar la lògica del backend per a la nostra aplicació web. Ens centrarem en la creació de rutes, controladors i models per gestionar les operacions del servidor. Utilitzarem el framework Laravel per facilitar el desenvolupament.

Objectius

  • Entendre la creació de rutes en Laravel.
  • Aprendre a crear i utilitzar controladors.
  • Implementar models per interactuar amb la base de dades.
  • Gestionar operacions CRUD (Crear, Llegir, Actualitzar, Eliminar).

  1. Creació de Rutes

Les rutes defineixen com les sol·licituds HTTP són gestionades per la nostra aplicació. En Laravel, les rutes es defineixen en el fitxer routes/web.php.

Exemple de Rutes

// routes/web.php

use App\Http\Controllers\ArticleController;

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

Route::resource('articles', ArticleController::class);

Explicació

  • Route::get('/', function () { ... });: Defineix una ruta GET per a la pàgina principal.
  • Route::resource('articles', ArticleController::class);: Defineix rutes RESTful per al controlador ArticleController.

  1. Creació de Controladors

Els controladors gestionen la lògica de les sol·licituds HTTP. Podem crear un controlador utilitzant l'eina de línia de comandes Artisan.

Creació d'un Controlador

php artisan make:controller ArticleController --resource

Exemple de Controlador

// app/Http/Controllers/ArticleController.php

namespace App\Http\Controllers;

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

class ArticleController extends Controller
{
    public function index()
    {
        $articles = Article::all();
        return view('articles.index', compact('articles'));
    }

    public function create()
    {
        return view('articles.create');
    }

    public function store(Request $request)
    {
        $article = new Article();
        $article->title = $request->title;
        $article->content = $request->content;
        $article->save();

        return redirect()->route('articles.index');
    }

    public function show($id)
    {
        $article = Article::findOrFail($id);
        return view('articles.show', compact('article'));
    }

    public function edit($id)
    {
        $article = Article::findOrFail($id);
        return view('articles.edit', compact('article'));
    }

    public function update(Request $request, $id)
    {
        $article = Article::findOrFail($id);
        $article->title = $request->title;
        $article->content = $request->content;
        $article->save();

        return redirect()->route('articles.index');
    }

    public function destroy($id)
    {
        $article = Article::findOrFail($id);
        $article->delete();

        return redirect()->route('articles.index');
    }
}

Explicació

  • index(): Mostra una llista de tots els articles.
  • create(): Mostra el formulari per crear un nou article.
  • store(Request $request): Emmagatzema un nou article a la base de dades.
  • show($id): Mostra un article específic.
  • edit($id): Mostra el formulari per editar un article existent.
  • update(Request $request, $id): Actualitza un article existent.
  • destroy($id): Elimina un article.

  1. Creació de Models

Els models representen les taules de la base de dades i proporcionen una interfície per interactuar amb les dades.

Creació d'un Model

php artisan make:model Article -m

Exemple de Model

// app/Models/Article.php

namespace App\Models;

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

class Article extends Model
{
    use HasFactory;

    protected $fillable = ['title', 'content'];
}

Explicació

  • protected $fillable = ['title', 'content'];: Defineix els camps que es poden omplir de manera massiva.

  1. Migracions

Les migracions permeten crear i modificar les taules de la base de dades de manera programàtica.

Exemple de Migració

// database/migrations/xxxx_xx_xx_create_articles_table.php

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

class CreateArticlesTable extends Migration
{
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('articles');
    }
}

Executar Migracions

php artisan migrate

Exercici Pràctic

Objectiu

Crear una aplicació CRUD per gestionar articles.

Passos

  1. Crear les rutes necessàries en routes/web.php.
  2. Crear el controlador ArticleController amb les accions CRUD.
  3. Crear el model Article amb els camps title i content.
  4. Crear la migració per a la taula articles.
  5. Implementar les vistes per a les accions CRUD (index, create, edit, show).

Solució

Rutes

// routes/web.php

use App\Http\Controllers\ArticleController;

Route::resource('articles', ArticleController::class);

Controlador

// app/Http/Controllers/ArticleController.php

namespace App\Http\Controllers;

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

class ArticleController extends Controller
{
    // Implementació de les accions CRUD (veure exemple anterior)
}

Model

// app/Models/Article.php

namespace App\Models;

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

class Article extends Model
{
    use HasFactory;

    protected $fillable = ['title', 'content'];
}

Migració

// database/migrations/xxxx_xx_xx_create_articles_table.php

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

class CreateArticlesTable extends Migration
{
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('articles');
    }
}

Vistes

  • resources/views/articles/index.blade.php
  • resources/views/articles/create.blade.php
  • resources/views/articles/edit.blade.php
  • resources/views/articles/show.blade.php

Conclusió

En aquesta secció, hem après a implementar la lògica del backend utilitzant Laravel. Hem creat rutes, controladors i models per gestionar les operacions CRUD. Aquest coneixement és fonamental per desenvolupar aplicacions web robustes i escalables. En el següent tema, ens centrarem en la integració amb una base de dades per completar la nostra aplicació.

Curs de Programació PHP

Mòdul 1: Introducció a PHP

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Arrays

Mòdul 5: Treballant amb Formularis

Mòdul 6: Treballant amb Fitxers

Mòdul 7: Programació Orientada a Objectes (OOP)

Mòdul 8: Treballant amb Bases de Dades

Mòdul 9: Tècniques Avançades de PHP

Mòdul 10: Frameworks PHP i Millors Pràctiques

Mòdul 11: Projecte: Construint una Aplicació Web

© Copyright 2024. Tots els drets reservats