Taskx mittels Laraknife: Unterschied zwischen den Versionen

Aus Vokabulabor
Zur Navigation springen Zur Suche springen
Zeile 42: Zeile 42:
cd $BASE/$PROJ
cd $BASE/$PROJ
larascripts/laraknife-tool.sh rest
larascripts/laraknife-tool.sh rest
./Own.sh all
</syntaxhighlight>
</syntaxhighlight>



Version vom 6. März 2024, 19:59 Uhr

Links

Zielsetzung

Es soll eine minimale Web-Applikation mit den Werkzeugen Laravel und Laraknife erstellt werden: Eine Verwaltung von Notizen.

Name

Eine Verballhornung des Wortes "Tasks": Die schwäbische Aussprache spricht ein x am Ende.

Eigenschaften

  • Benutzerverwaltung: nur angemeldete Benutzer können Applikation nutzen
  • Rechteverwaltung mittels Rollen
  • Verwaltung von Notizen: Titel, Text, Kategorie, Status: offen, erledigt

Installation

  • php muss installiert sein! PHP einrichten
  • mariadb muss installiert sein: mysql
  • als normaler Benutzer (nicht root):
PROJ=taskx

SCRIPT=/var/tmp/CreateLaraProj.sh
wget "https://public.hamatoma.de/public/CreateLaraProj.sh" -O $SCRIPT
chmod +x $SCRIPT
PASSW=topsecret
BASE=/home/ws/php
sudo apt update
sudo apt install composer -y
$SCRIPT $PROJ "$PASSW" "$BASE"
  • Am Ende wird dazu aufgefordert, das Script /tmp/IncludeLara.sh zu starten:
# wget https://public.hamatoma.de/public/IncludeLara.sh -O /tmp/IncludeLara.sh
# chmod +x /tmp/IncludeLara.sh
/tmp/IncludeLara.sh git $BASE/$PROJ

Restliche Installation

cd $BASE/$PROJ
larascripts/laraknife-tool.sh rest
./Own.sh all

Das folgende sind die einzelnen Schritte, normalerweise nicht erforderlich:

# Links erstellen/auffrischen:
larascripts/laraknife-tool.sh build-links [--force]
# Mehrsprachigkeit
larascripts/laraknife-tool.sh init-i18n
# Die neuen Übersetzungen müssen in resources/lang/sources/taskx.de.json eingetragen werden.
# Roles und SProperties füllen
larascripts/laraknife-tool.sh fill-db
# Laraknife-Module anpassen
larascripts/laraknife-tool.sh adapt-modules
# Layout erstellen
larascripts/laraknife-tool.sh create-layout
# Homepage einrichten
larascripts/laraknife-tool.sh create-home

Entwicklungsumgebung starten

cd /home/ws/php/taskx
./Build
# In einem ANDEREN Terminal:
php artisan serve

Modul Device erstellen

Tabellenbeschreibung erstellen

  • Konvention: Tabelle wird kleingeschrieben, im Plural
TABLE=devices
php artisan make:migration create_${TABLE}_table
  • Es wird die Datei database/migrations/2023_12_29_180821_create_devices_table.php erzeugt, wobei Datum/Uhrzeit bei jeder Generierung anders ist.
  • Diese Datei anpassen:
        Schema::create('devices', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->string('name');
            $table->text('description');
            $table->integer('devicegroup_scope');
            $table->foreignId('owner_id')->references('id')->on('users')->nullable();
        });
    }

Modul erzeugen

php artisan migrate
./Lara create:module database/migrations/*_create_${TABLE}_table.php

Database Seeder

Um Tabellen mit sinnvollen Daten vorzubelegen, werden Database Seeder verwendet.

php artisan make:seeder DeviceSeeder

Die entstehende Datei database/seeders/DeviceSeeder.php anpassen:

    public function run(): void
    {
        DB::table('sproperties')->insert([
            'id' => 2001, 'scope' => 'devicegroup', 'name' => 'Computer', 'order' => '10', 'shortname' => 'C'
        ]);
        DB::table('sproperties')->insert([
            'id' => 2002, 'scope' => 'devicegroup', 'name' => 'Router', 'order' => '20', 'shortname' => 'R'
        ]);
    }

Aktivieren:

php artisan db:seed --class=DeviceSeeder

Routing einrichten

  • In Datei routes/web.php einfügen:
...
DeviceController::routes();
...
  • Die Klasse NodeController ist unterstrichen: mit Strg-Alt-I Klassen einbinden.

Starten, Registrieren, Login

  • Den Webserver starten:
./Build
# in einem anderen Terminal:
php artisan serve

In Homepage einfügen

  • resources/views/home.blade.php:
<li><a href="/device-index">Geräte</a></li>

Controller und Views anpassen

Übersicht (index)

  • Datei app/Http/Controllers/DeviceController.php
    public function index()
    {
    }
  • Datei resources/views/device/index.blade.php
<form id="device-index" action="/device-index" method="POST">
    @csrf

Anlegen (create)

  • Datei app/Http/Controllers/DeviceController.php
  • Die drei Methoden ersetzen:
  • Datei resources/views/device/create.blade.php
  • Übersetzungen in resources/lang/sources/taskx.de.json
"Devices": "Geräte",
  • Aktivieren:
./Join

Ändern (edit)

  • Datei app/Http/Controllers/DeviceController.php
    public function edit(Device $device)
    {
    }
    public function update(Device $device, Request $request)
    {
        $rc = null;
        return $rc;
    }
  • Datei resources/views/device/edit.blade.php
  • Übersetzungen in resources/lang/sources/taskx.de.json
"Change of a Device": "Ändern eines Gerätes",
  • Aktivieren:
./Join

Anzeigen (show/delete)

  • Datei app/Http/Controllers/DeviceController.php
    public function show(Device $device)
    {
    }
  • Datei resources/views/device/show.blade.php
  • Übersetzungen in resources/lang/sources/taskx.de.json
"A Device" : "Ein Gerät",
"Deletion of a Device": "Löschen eines Gerätes",
  • Aktivieren:
./Join