Kontrolle Wenn Falsch keine Weiterleitung zum insert query

Schaut doch ganz gut aus :)

Zwei Dinge die mir aber noch spontan auffielen:

1. Ich verwende hauptsächlich HTML 4.01 und hätte somit mit Deiner Klasse Probleme :P
2. Schreib hinter die echos immer noch ein "\n", damit im HTML Source-Code auch Zeilenumbrüche gemacht werden. Ansonsten würde alles in einer Zeile stehen - unleserlich falls Du mal nach einem HTML Problem suchen musst.

Also z.B.:
PHP:
        public static function create_textarea($name, $id, $value="", $cols=50, $rows=10)
        {
            return "<textarea cols=\"$cols\" rows=\"$rows\" name=\"$name\" id=\"$id\">$value</textarea>\n";
        }


Sahnehäubchen: Wenn Du es jetzt noch durchziehen würdest, und gar keine HTML Ausgabe via PHP zu machen, wärst Du der König und hättest später bei größeren Projekten auch viele Probleme weniger.

Stell Dir mal vor Du würdest jemand zur Seite bekommen, der von PHP überhaupt keine Ahnung hätte. Er würde dann lustig das statische HTML Template (Seite) erstellen und Du müsstest dann alles ins PHP reinziehen.

Besser wäre es Du lässt seine Website so stehen wie sie ist und ersetzt nur die Dinge die dynamisch sind. Konkret würdest Du die Seite unter xxx.html abspeichern. PHP lädt das File nun und sucht nach bestimmten Merkmalen und ersetzt diese durch den Code.

Bei mir schaut das folgendermaßen aus:

wrapper.html:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>...</title>
<link rel="stylesheet" href="core/css/screen.css" type="text/css" media="screen" />
</head>
<body>
<a name="top"></a>
<div id="header">
Blah blubb..
</div>
<!-- #header end -->
<div id="navigation">
  <?= $this->ST_NAVIGATION; ?>
</div>
<!-- #navigation end -->
<div id="content">
  <?= $this->ST_CONTENT; ?>
</div>
<br /><br /><br />
<div id="footer">
  <div>&copy; Cheffe :)</div>
</div><!-- #footer end -->
</body>
</html>


Der PHP Controller für das Template:

PHP:
<?php
if(!defined('validEntry')) die('Not a valid entry point!');

/**
 * Controller class for the module 'Main'
 */
class Main extends ModuleController implements Index
{
  /**
   * Function for the module action 'index'
   *
   * @access  public
   * @return  void
   */
  public function index()
  {
    try {
      // Template
      $wrapperTmpl = new TemplateView('core', 'wrapper', false);

      // Add the sub templates in the main template and render it
      // Das Subtemplate Navigation habe ich für den Tutorial Post gelöscht - hier wird im Prinzip ein Sub Template erzeugt und eingebunden

      // Hier ein Beispiel wie Du eine Variable setzt
      $wrapperTmpl->assign('ST_CONTENT', 'Hallo Welt :)');
      $wrapperTmpl->renderTemplate();
    }
    catch (Exception $e) {
      echo "Seite kann nicht angezeigt werden - Code: ".$e->getCode();
    }
  }
  // END index()

}
// END class Main

?>

Das Ganze habe ich von einem laufenden Projekt - kann sein dass ich zu viel gestrichen habe aber es soll nur verdeutlichen was ich meine. Die PHP (Controller) Klasse ist für ein Modul (hier "Main") zuständig.

Mit $wrapperTmpl = new TemplateView('core', 'wrapper', false); erzeugst Du ein neues Template und übergibst mit $wrapperTmpl->assign('ST_CONTENT', 'Hallo Welt :)'); die Inhalte für die HTML Seite ...

Zum Schluss eben das Ganze noch ausgeben (rendern).

Im Prinzip funktioniert das Ganze ähnlich der Template Klasse von Dennis. Schau hier mal nach welche PHP Kurzschreibweisen es für das HTML Template gibt:

http://de.wikipedia.org/wiki/Template_Engine#PHP_Template_Engines


--------

Jedenfalls zum Schluss: Finde es gut, dass Du Dir so viel Mühe gibst und Du bist auf dem richtigen Weg. Vielleicht reicht es erstmal Dein Projekt nach Deiner Klasse umzusetzen und Template Systeme für spätere Projekte zu nutzen.

Ich kenne das, wenn man am Anfang zu viel will und vor lauter Wald die Bäume nicht mehr sieht ;)


Hier noch was: http://php-coding-standard.de/php_template_engine.php
 
Okay, angenommen ich hätte ein Template
mit Platzhaltern..
diese ersetzte ich dann durch DB einträge..

Diese Einträge werden durch ein Backend eingeben.

Ist es dann Sinnvoll im Backend selber noch einmal mit Platzhaltern zu arbeiten
und diese dann zu ersetzen?

Sprich ich würde ein Template Engine für
das Frontend verwenden

und für das Backend nocheinmal eine Engine

Ist es für diese Unterteilung nicht Ratsamer hier lieber auf die kleine Lib. von mir :)
zurück zugreifen um nicht eine vielzahl von Dateien zu haben.
 
Was Du verwenden möchtest, überlasse ich Dir :)

Für kleine Dinge nehme ich auch kein Template System - meist sind das Serverskripte die eh keine richtige Ausgaben haben.

Alles was mit Web und HTML zu tun hat, setze ich in Templates um bzw. zwinge mich dazu. Es ist einfach sauberer als irgendwelche HTML Änderungen im Source Code zu suchen.

Ich kenne Dein Projekt nicht - vielleicht ist es dafür echt zu viel des Guten.
 
Na, ja kurze Beschreibung meines Projektes

Ich habe ein Template

page.tpl

Ich habe eine index.php

Ruft eine Klasse auf die das Template inkudiert und dann die Werte der DB abgleicht
und die Content ausgibt.

Ist ein CMS nur wollte ich einen sauberen Code schreiben.,
der nicht so viel grün hat

grün=Textausgaben bei Bluefish "text";

Es ist schon relativ gross und ich denke mir da, die einzelnen Module
so wie das Menü Modul.
Zum erstellen von Menüs einen Konfigurationsdialog im Backend aufrufen dafür
ein Extra Template unsinnig wäre.

Aber diesen hin geklatschten Code <form .. möchte ich auch nicht.

Darum diese fast perfekte:)
Klasse.

Na, ja... ich schick dir mein Projekt zum überarbeiten :)
wenn ich genug Fehler eingebaut habe *fg*
 
Zurück