M4
This commit is contained in:
6
M5/emensa/views/debug.blade.php
Normal file
6
M5/emensa/views/debug.blade.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<h1>This is a blade view showing phpinfo();</h1>
|
||||
<p><a href="/">go back</a>.</p>
|
||||
|
||||
@php
|
||||
phpinfo();
|
||||
@endphp
|
||||
32
M5/emensa/views/demo/dbdata.blade.php
Normal file
32
M5/emensa/views/demo/dbdata.blade.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Beispiel: Daten aus der Datenbank</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
@if (isset($data['error']))
|
||||
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
|
||||
<p>Fehlermeldung</p>
|
||||
<pre> {{$data['beschreibung']}}</pre>
|
||||
|
||||
@else
|
||||
|
||||
|
||||
<article>
|
||||
<h1>Daten aus der Datenbank der Tabelle: Gerichte</h1>
|
||||
<p>Der Controller inkludiert das benötigte Model (gerichte.php in diesem Fall)
|
||||
und ruft die benötigte Funktion <code>db_gerichte_select_all()</code> zum Laden der Daten auf</p>
|
||||
<ul>
|
||||
@forelse($data as $a)
|
||||
<li>{{$a['name']}}</li>
|
||||
@empty
|
||||
<li>Keine Daten vorhanden.</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</article>
|
||||
@endif
|
||||
</body>
|
||||
</html>
|
||||
92
M5/emensa/views/demo/demo.blade.php
Normal file
92
M5/emensa/views/demo/demo.blade.php
Normal file
@@ -0,0 +1,92 @@
|
||||
@extends(".layouts.layout")
|
||||
|
||||
@section("content")
|
||||
<div>
|
||||
<h1>Demo für {{ $name }}</h1>
|
||||
<p>Kurze Übersicht, wie die Arbeit mit dem Router und der Blade View-Engine funktioniert.</p>
|
||||
|
||||
<h2>Router</h2>
|
||||
<p>Der Router nimmt den Request entgegen und zerlegt ihn in die einzelnen Teile der URI. Wichtig ist hier vor
|
||||
allem der Pfad und der Querystring.</p>
|
||||
<p>Wenn der Pfad in der Routenkonfiguration (<code>\$config</code> Array aus der Datei
|
||||
<code>routes/web.php</code>) gefunden wird, lädt der Router die angegebene Klasse.</p>
|
||||
|
||||
<h3>Funktionsweise</h3>
|
||||
<p>Im vorliegenden Beispiel sehen Sie diese Seite ... </p>
|
||||
<ol>
|
||||
<li>weil der Pfad in der Routenkonfiguration gefunden wurde</li>
|
||||
<li>und dort <span class="code">'DemoController@howto'</span> hinterlegt ist</li>
|
||||
<li>und im Ordner <span class="code">controllers/</span> die Datei <code class="language-php">DemoController.php</code> gefunden werden konnte
|
||||
</li>
|
||||
<li>und mit ihr ein Objekt des Typs <span class="code">DemoController</span> instanziiert werden konnte</li>
|
||||
<li>und dieses Objekt die Funktion (Action) <span class="code">howto()</span> ausgeführt hat</li>
|
||||
</ol>
|
||||
<p>Sie sehen: da muss einiges stimmen und vieles davon ist Konvention.</p>
|
||||
<h3>Querystrings und Pfadsegmente</h3>
|
||||
<p>Die Actions in den Controller-Klassen sollen per Konvention immer ein <span class="code">RequestData</span> Objekt
|
||||
entgegennehmen. Beispiel: <code class="language-php">howto(RequestData \$rd)</code></p>
|
||||
<p>Dieses RequestData Objekt wird durch den Router befüllt, wenn Daten in der URL extrahiert werden konnten.</p>
|
||||
<p>Daten finden sich URLs...</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
<strong>im Querystring</strong><br>Beispiel: rufen Sie diese mit
|
||||
<code class="language-http">{{strtolower(explode('/',$_SERVER["SERVER_PROTOCOL"])[0])}}://{{$_SERVER["HTTP_HOST"]}}/demo?<strong>bgcolor=fefbd8&name=Remmy</strong></code>
|
||||
auf, werden <span class="language-php">bgcolor</span> und <code class="language-php">name</code> mitsamt Werten als Query Array
|
||||
<code class="language-php">$rd->query</code>) übergeben
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Probieren Sie es aus ;)</p>
|
||||
@if(count($rd->args))
|
||||
<p><strong>Argumente dieses Aufrufs:</strong></p>
|
||||
|
||||
@forelse($rd->args as $a)
|
||||
<div><span class="code">{{$a}}</span></div>
|
||||
@empty
|
||||
<p>Keine weiteren Argumente im Request</p>
|
||||
@endforelse
|
||||
@endif
|
||||
@if(count($rd->query))
|
||||
<p><strong>Daten aus der Query dieses Aufrufs:</strong></p>
|
||||
<pre><code class="language-php">
|
||||
@forelse($rd->query as $k => $v)
|
||||
$rd->query['{{$k}}']={{$v}}
|
||||
@empty
|
||||
<p>Keine Querydaten</p>
|
||||
@endforelse
|
||||
</code></pre>
|
||||
@endif
|
||||
<h2>Blade</h2>
|
||||
<p>Blade <a href="https://github.com/EFTEC/BladeOne#install-pick-one-of-the-next-one">muss installiert</a> sein.
|
||||
Die Installation ist bereits geschehen und die Bibliothek liegt unter /vendor.
|
||||
</p>
|
||||
<h3>Daten übergeben und View rendern</h3>
|
||||
<p>Bei der Verwendung der View-Engine gelten einige Konventionen:
|
||||
Die Dateien müssen <code class="language-php"><viewname>.blade.php</code> heißen und im Ordner <code class="language-php">views</code> liegen.
|
||||
</p>
|
||||
<p>Sie können der View dann Daten mitgeben, indem Sie alle Daten in ein Array schreiben und dieses dann
|
||||
übergeben.</p>
|
||||
<p>Beispiel:</p>
|
||||
<pre><code class="language-php">
|
||||
view("viewtest",
|
||||
array(
|
||||
"texts"=>$textArray,
|
||||
"persona"=>$persona,
|
||||
"rd"=>$rd
|
||||
)); // öffnet ../views/viewtest.blade.php
|
||||
</code></pre>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section("cssextra")
|
||||
<style>
|
||||
body > div {background-color: {{ '#' . $bgcolor }}; }
|
||||
</style>
|
||||
@endsection
|
||||
|
||||
@section("jsextra")
|
||||
<script src="/js/highlight.min.js"></script><script>hljs.highlightAll();</script>
|
||||
@endsection
|
||||
24
M5/emensa/views/demo/requestdata.blade.php
Normal file
24
M5/emensa/views/demo/requestdata.blade.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<h1>RequestData</h1>
|
||||
|
||||
@if(count($rd->getData()))
|
||||
<p>combined request data</p>
|
||||
<pre>
|
||||
{{print_r($rd->getData(),1)}}
|
||||
</pre>
|
||||
@else
|
||||
<p>this request contained zero parameters</p>
|
||||
@endif
|
||||
|
||||
@if(count($rd->getGetData()))
|
||||
<p><code>GET</code> request data</p>
|
||||
<pre>
|
||||
{{print_r($rd->getGetData(),1)}}
|
||||
</pre>
|
||||
@endif
|
||||
|
||||
@if(count($rd->getPostData()))
|
||||
<p><code>POST</code> request data</p>
|
||||
<pre>
|
||||
{{print_r($rd->getPostData(),1)}}
|
||||
</pre>
|
||||
@endif
|
||||
13
M5/emensa/views/examples/m4_7a_queryparameter.blade.php
Normal file
13
M5/emensa/views/examples/m4_7a_queryparameter.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>7a</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Der Wert von name lautet: {{$request}}
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
41
M5/emensa/views/examples/m4_7b_kategorie.blade.php
Normal file
41
M5/emensa/views/examples/m4_7b_kategorie.blade.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Beispiel: Daten aus der Datenbank</title>
|
||||
|
||||
<style>
|
||||
h1 {
|
||||
font-weight: 300;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@if (isset($data['error']))
|
||||
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
|
||||
<p>Fehlermeldung</p>
|
||||
<pre> {{$data['beschreibung']}}</pre>
|
||||
|
||||
@else
|
||||
<?php
|
||||
$zweites = false; ?>
|
||||
|
||||
<article>
|
||||
<h1>Daten aus der Datenbank der Tabelle: Kategorien</h1>
|
||||
|
||||
<ul>
|
||||
@forelse($data as $a)
|
||||
@if($zweites) <h1><li>{{$a['name']}}</li></h1> <?php $zweites = false; ?>
|
||||
@else
|
||||
<li>{{$a['name']}}</li> <?php $zweites = true; ?>
|
||||
@endif
|
||||
@empty
|
||||
<li>Keine Daten vorhanden.</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</article>
|
||||
@endif
|
||||
|
||||
</body>
|
||||
</html>
|
||||
34
M5/emensa/views/examples/m4_7c_gerichte.blade.php
Normal file
34
M5/emensa/views/examples/m4_7c_gerichte.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Beispiel: Daten aus der Datenbank</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@if (isset($data['error']))
|
||||
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
|
||||
<p>Fehlermeldung</p>
|
||||
<pre> {{$data['beschreibung']}}</pre>
|
||||
|
||||
@else
|
||||
|
||||
<article>
|
||||
<h1>Daten aus der Datenbank der Tabelle: Kategorien</h1>
|
||||
|
||||
<ul>
|
||||
@forelse($data as $a)
|
||||
@if(!empty($a['name']))
|
||||
<li>{{$a['name']}}</li>
|
||||
@endif
|
||||
|
||||
@empty
|
||||
<li>Es sind keine Gerichte vorhanden</li>
|
||||
@endforelse
|
||||
</ul>
|
||||
</article>
|
||||
@endif
|
||||
|
||||
</body>
|
||||
</html>
|
||||
13
M5/emensa/views/examples/pages/m4_7d_page_1.blade.php
Normal file
13
M5/emensa/views/examples/pages/m4_7d_page_1.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
@extends(".layouts.m4_7d_layout",['title' => "Page 1"])
|
||||
|
||||
@section("header")
|
||||
|
||||
@endsection
|
||||
|
||||
@section("body")
|
||||
<p>Page 1</p>
|
||||
@endsection
|
||||
|
||||
@section("footer")
|
||||
<p>Footer of Page 1</p>
|
||||
@endsection
|
||||
13
M5/emensa/views/examples/pages/m4_7d_page_2.blade.php
Normal file
13
M5/emensa/views/examples/pages/m4_7d_page_2.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
@extends(".layouts.m4_7d_layout",['title' => "Page 2"])
|
||||
|
||||
@section("header")
|
||||
|
||||
@endsection
|
||||
|
||||
@section("body")
|
||||
<p>Page 2</p>
|
||||
@endsection
|
||||
|
||||
@section("footer")
|
||||
<p>Footer of Page 2</p>
|
||||
@endsection
|
||||
34
M5/emensa/views/home.blade.php
Normal file
34
M5/emensa/views/home.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
@extends("layouts.layout")
|
||||
|
||||
@section("content")
|
||||
<header class="mt-5">
|
||||
<h1>Hauptseite E-Mensa</h1>
|
||||
<img src="/img/test.jpg"
|
||||
alt="Testbild von https://cdn.pixabay.com/photo/2014/06/03/19/38/road-sign-361513_960_720.jpg">
|
||||
</header>
|
||||
<nav class="mt-5">
|
||||
<strong>Navigation</strong>
|
||||
<ul>
|
||||
<li><a href="/demo">Demo</a></li>
|
||||
<li><a href="/dbconnect">Datenbank: Gerichte</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="/debug"><code class="language-php">phpinfo();</code></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<footer>
|
||||
© Team-Name DBWT
|
||||
</footer>
|
||||
@endsection
|
||||
|
||||
@section("cssextra")
|
||||
<style>
|
||||
body > div {
|
||||
background-color: {{$rd->query['bgcolor'] ?? 'ffffff'}}
|
||||
}
|
||||
</style>
|
||||
@endsection
|
||||
|
||||
@section("jsextra")
|
||||
<script src="/js/highlight.min.js"></script><script>hljs.highlightAll();</script>
|
||||
@endsection
|
||||
23
M5/emensa/views/layouts/layout.blade.php
Normal file
23
M5/emensa/views/layouts/layout.blade.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="DE">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>E-Mensa Routing Script</title>
|
||||
<meta name="description" content="unused">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="css/default.min.css">
|
||||
@yield("cssextra")
|
||||
<meta name="theme-color" content="#dadada">
|
||||
<!-- good developers check the markup ;) -->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
@yield("content")
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@yield("jsextra")
|
||||
</body>
|
||||
|
||||
</html>
|
||||
21
M5/emensa/views/layouts/m4_7d_layout.blade.php
Normal file
21
M5/emensa/views/layouts/m4_7d_layout.blade.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="DE">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>{{ $title }}</title>
|
||||
|
||||
@yield("header")
|
||||
|
||||
<!-- good developers check the markup ;) -->
|
||||
</head>
|
||||
<body>
|
||||
@yield("body")
|
||||
|
||||
<footer>
|
||||
<table class="fusszeile">
|
||||
@yield("footer")
|
||||
</table>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
30
M5/emensa/views/layouts/main_layout.blade.php
Normal file
30
M5/emensa/views/layouts/main_layout.blade.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="DE">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>{{ $title }}</title>
|
||||
|
||||
@yield("header")
|
||||
|
||||
<!-- good developers check the markup ;) -->
|
||||
</head>
|
||||
<body>
|
||||
@yield("nav")
|
||||
<hr>
|
||||
<div class="grid">
|
||||
<div></div>
|
||||
<div>
|
||||
@yield("text")
|
||||
|
||||
@yield("gerichte")
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<footer>
|
||||
<table class="fusszeile">
|
||||
@yield("footer")
|
||||
</table>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
61
M5/emensa/views/main/index.blade.php
Normal file
61
M5/emensa/views/main/index.blade.php
Normal file
@@ -0,0 +1,61 @@
|
||||
@extends("layouts.main_layout", ['title' => "E-Mensa"])
|
||||
|
||||
@section("header")
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
@endsection
|
||||
|
||||
@section("nav")
|
||||
<div class="grid">
|
||||
<div>
|
||||
<img src="/img/fh-logo.jpg" alt="FH-Logo">
|
||||
</div>
|
||||
<div>
|
||||
<a href="#ankündigung">Ankündigung</a>
|
||||
<a href="#speisen">Speisen</a>
|
||||
<a href="#zahlen">Zahlen</a>
|
||||
<a href="#kontakt">Kontakt</a>
|
||||
<a href="#wichtig">Wichtig für uns</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section("text")
|
||||
|
||||
<img src="/img/mensa21.jpg" alt="Essen">
|
||||
<h1 id="ankündigung">Bald gibt es auch Essen online ;)</h1>
|
||||
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
|
||||
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
|
||||
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
|
||||
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
|
||||
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
|
||||
sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
|
||||
<h1 id="speisen">Köstlichkeiten die Sie erwarten</h1>
|
||||
|
||||
@endsection
|
||||
|
||||
@section("gerichte")
|
||||
|
||||
@if (isset($data['error']))
|
||||
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
|
||||
<p>Fehlermeldung</p>
|
||||
<pre> {{$data['beschreibung']}}</pre>
|
||||
|
||||
@else
|
||||
<?php
|
||||
echo $data["gericht"];
|
||||
echo $data["allergene"];
|
||||
?>
|
||||
@endif
|
||||
|
||||
@endsection
|
||||
|
||||
@section("footer")
|
||||
|
||||
<tr>
|
||||
<td>(c) E-Mensa GmbH</td>
|
||||
<td>Şafak Hazinedar & Robert Joel</td>
|
||||
<td><a href="">Impressum</a></td>
|
||||
</tr>
|
||||
|
||||
@endsection
|
||||
7
M5/emensa/views/notimplemented.blade.php
Normal file
7
M5/emensa/views/notimplemented.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@extends("layouts.layout")
|
||||
|
||||
@section("content")
|
||||
<h1>Nicht implementiert</h1>
|
||||
<p>Sie haben eine <abbr title="Pfad: {{$url}}">Action</abbr> aufgerufen, die zu dieser <abbr title="views/notimplemented.blade.php">View</abbr> führt.</p>
|
||||
<p>Vervollständigen Sie die Action, sodass die Aufgabe erfüllt wird.</p>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user