Laravel | Einstieg in </> htmx

Inhaltsverzeichnis [Anzeigen]

TL;DR

Der Code für die in diesem Post erstelle Anwendung liegt hier.

Einrichten der Starter-App

Erstellen der Starter App. In diesem Post beschreibe ich, wie sie eine Starter-App erstellen und die grundlegenden Anpassungen durchführen können.

Sie können auch direkt mit dem dazugehörigen Repository starten:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
❯ git clone https://github.com/r14r/Laravel_Tutorial_Erstellen-einer-Starter-App Laravel_Tutorial_Arbeiten-mit-htmx
❯ git clone https://github.com/r14r/Laravel_Tutorial_Erstellen-einer-Starter-App Laravel_Tutorial_Arbeiten-mit-htmx
❯ git clone https://github.com/r14r/Laravel_Tutorial_Erstellen-einer-Starter-App Laravel_Tutorial_Arbeiten-mit-htmx
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
❯ composer install
❯ npm install
❯ npm run build
❯ php artisan
❯ composer install ❯ npm install ❯ npm run build ❯ php artisan
❯ composer install
❯ npm install
❯ npm run build
❯ php artisan
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
❯ cp .env.example .env
❯ php artisan migrate
❯ php artisan key:generate
❯ cp .env.example .env ❯ php artisan migrate ❯ php artisan key:generate
❯ cp .env.example  .env
❯ php artisan migrate
❯ php artisan key:generate
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
❯ php artisan serve
❯ php artisan serve
❯ php artisan serve

htmx einrichten

Installation

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
❯ npm install htmx.org
❯ npm install htmx.org
❯ npm install htmx.org

Hinweis: Verwenden sie nicht das NPM Paket htmx, dies hat einen anderen Inhalt

Seite für unsere Beipiele erstellen (htmx Playground)

Routing erstellen

Seite erstellen: resources/views/playground.blade.php

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp resources/views/dashboard.blade.php resources/views/playground.blade.php
cp resources/views/dashboard.blade.php resources/views/playground.blade.php
cp resources/views/dashboard.blade.php resources/views/playground.blade.php

Inhalt anpassen:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight">
{{ __('Playground') }} for Laravel and <<span style="color:#3d72d7">/</span>> htm<span
style="color:#3d72d7">x</span>
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white dark:bg-gray-800 overflow-hidden shadow-xl sm:rounded-lg">
#
</div>
</div>
</div>
</x-app-layout>
<x-app-layout> <x-slot name="header"> <h2 class="font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight"> {{ __('Playground') }} for Laravel and <<span style="color:#3d72d7">/</span>> htm<span style="color:#3d72d7">x</span> </h2> </x-slot> <div class="py-12"> <div class="max-w-7xl mx-auto sm:px-6 lg:px-8"> <div class="bg-white dark:bg-gray-800 overflow-hidden shadow-xl sm:rounded-lg"> # </div> </div> </div> </x-app-layout>
<x-app-layout>
    <x-slot name="header">
        <h2 class="font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight">
            {{ __('Playground') }} for Laravel and <<span style="color:#3d72d7">/</span>> htm<span
                    style="color:#3d72d7">x</span>
        </h2>
    </x-slot>

    <div class="py-12">
        <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
            <div class="bg-white dark:bg-gray-800 overflow-hidden shadow-xl sm:rounded-lg">
                #
            </div>
        </div>
    </div>
</x-app-layout>

Navigationslinks anpassen

Ergebnis

Ersten htmx Aufruf hinzufügen

API Aufruf einrichten

Die Datei routes/api.php erweitern:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Route::get('/htmx/message', function () {
return response('Dies ist eine Nachricht', 200)->header('Content-Type', 'application/json');
});
Route::get('/htmx/message', function () { return response('Dies ist eine Nachricht', 200)->header('Content-Type', 'application/json'); });
Route::get('/htmx/message', function () {
    return response('Dies ist eine Nachricht', 200)->header('Content-Type', 'application/json');
});

Playground Seite anpassen

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<div hx-get="/api/htmx/message">
Mitteilungen laden...
</div>
<div hx-get="/api/htmx/message"> Mitteilungen laden... </div>
<div hx-get="/api/htmx/message">
    Mitteilungen laden...
</div>

Ergebnis

htmx Beispiele

Auf der htmx – Projekteseite finden sie viele Beispiele. Wir wollen nun einige davon in Laravel umsetzen.