Taskx mittels Laraknife: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
Zeile 64: | Zeile 64: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= Modul | = Modul Device erstellen = | ||
== Tabellenbeschreibung erstellen == | == Tabellenbeschreibung erstellen == | ||
* Konvention: Tabelle wird kleingeschrieben, im Plural | * Konvention: Tabelle wird kleingeschrieben, im Plural | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
TABLE= | TABLE=devices | ||
php artisan make:migration create_${TABLE}_table | php artisan make:migration create_${TABLE}_table | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Es wird die Datei database/migrations/ | * 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: | * Diese Datei anpassen: | ||
<pre> | <pre> | ||
Schema::create(' | Schema::create('devices', function (Blueprint $table) { | ||
$table->id(); | $table->id(); | ||
$table->timestamps(); | $table->timestamps(); | ||
$table->string(' | $table->string('name'); | ||
$table->text(' | $table->text('description'); | ||
$table->integer('devicegroup_scope'); | |||
$table->foreignId('owner_id')->references('id')->on('users')->nullable(); | |||
$table->integer(' | |||
$table->foreignId(' | |||
}); | }); | ||
} | } | ||
Zeile 97: | Zeile 94: | ||
Um Tabellen mit sinnvollen Daten vorzubelegen, werden '''Database Seeder''' verwendet. | Um Tabellen mit sinnvollen Daten vorzubelegen, werden '''Database Seeder''' verwendet. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
php artisan make:seeder | php artisan make:seeder DeviceSeeder | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Die entstehende Datei database/seeders/ | Die entstehende Datei database/seeders/DeviceSeeder.php anpassen: | ||
<pre> | <pre> | ||
public function run(): void | public function run(): void | ||
{ | { | ||
DB::table('sproperties')->insert([ | 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' | ||
]); | ]); | ||
} | } | ||
Zeile 113: | Zeile 110: | ||
Aktivieren: | Aktivieren: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
php artisan db:seed --class=DeviceSeeder | |||
php artisan db:seed --class= | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 122: | Zeile 117: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
... | ... | ||
DeviceController::routes(); | |||
... | ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 142: | Zeile 137: | ||
* resources/views/home.blade.php: | * resources/views/home.blade.php: | ||
<pre> | <pre> | ||
<li><a href="/ | <li><a href="/device-index">Geräte</a></li> | ||
</pre> | </pre> | ||
== Controller und Views anpassen == | == Controller und Views anpassen == | ||
=== Übersicht (index) === | === Übersicht (index) === | ||
* Datei app/Http/Controllers/ | * Datei app/Http/Controllers/DeviceController.php | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
public function index() | public function index() | ||
{ | { | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Datei resources/views/ | * Datei resources/views/device/index.blade.php | ||
<syntaxhighlight lang="html"> | <syntaxhighlight lang="html"> | ||
<form id=" | <form id="device-index" action="/device-index" method="POST"> | ||
@csrf | @csrf | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Anlegen (create) === | === Anlegen (create) === | ||
* Datei app/Http/Controllers/ | * Datei app/Http/Controllers/DeviceController.php | ||
* Die drei Methoden '''ersetzen''': | * Die drei Methoden '''ersetzen''': | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Datei resources/views/ | * Datei resources/views/device/create.blade.php | ||
<syntaxhighlight lang="html"> | <syntaxhighlight lang="html"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Übersetzungen in resources/lang/sources/taskx.de.json | * Übersetzungen in resources/lang/sources/taskx.de.json | ||
<pre> | <pre> | ||
" | "Devices": "Geräte", | ||
</pre> | </pre> | ||
* Aktivieren: | * Aktivieren: | ||
Zeile 307: | Zeile 173: | ||
=== Ändern (edit) === | === Ändern (edit) === | ||
* Datei app/Http/Controllers/ | * Datei app/Http/Controllers/DeviceController.php | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
public function edit( | public function edit(Device $device) | ||
{ | { | ||
} | } | ||
public function update( | public function update(Device $device, Request $request) | ||
{ | { | ||
$rc = null; | $rc = null; | ||
return $rc; | return $rc; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Datei resources/views/ | * Datei resources/views/device/edit.blade.php | ||
<syntaxhighlight lang="html"> | <syntaxhighlight lang="html"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Übersetzungen in resources/lang/sources/taskx.de.json | * Übersetzungen in resources/lang/sources/taskx.de.json | ||
<pre> | <pre> | ||
"Change of a | "Change of a Device": "Ändern eines Gerätes", | ||
</pre> | </pre> | ||
* Aktivieren: | * Aktivieren: | ||
Zeile 371: | Zeile 199: | ||
=== Anzeigen (show/delete) === | === Anzeigen (show/delete) === | ||
* Datei app/Http/Controllers/ | * Datei app/Http/Controllers/DeviceController.php | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
public function show( | public function show(Device $device) | ||
{ | { | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Datei resources/views/ | * Datei resources/views/device/show.blade.php | ||
<syntaxhighlight lang="html"> | <syntaxhighlight lang="html"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Übersetzungen in resources/lang/sources/taskx.de.json | * Übersetzungen in resources/lang/sources/taskx.de.json | ||
<pre> | <pre> | ||
"A | "A Device" : "Ein Gerät", | ||
"Deletion of a | "Deletion of a Device": "Löschen eines Gerätes", | ||
</pre> | </pre> | ||
* Aktivieren: | * Aktivieren: |
Version vom 19. Februar 2024, 15:06 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
- als normaler Benutzer (nicht root):
PROJ=taskx
SCRIPT=/tmp/CreateLaraProj.sh
wget "https://public.hamatoma.de/public/CreateLaraProj.sh" -O $SCRIPT
chmod +x $SCRIPT
PASSW=topsecret
BASE=/home/ws/php
$SCRIPT $PROJ "$PASSW" "$BASE"
- Am Ende wird dazu aufgefordert, das Script /tmp/IncludeLara.sh zu starten:
/tmp/IncludeLara.sh git $BASE/$PROJ
Restliche Installation
cd $BASE/$PROJ
larascripts/laraknife-tool.sh rest
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
- Im Brower aufrufen: http://localhost:8000
- Oben rechts: Register
- Felder ausfüllen
- Oben rechts: Login
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