• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Tutorial gesucht: HTML und PHP sauber trennen?

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
Ich suche ein Tutorial, gerne auch als Videotraining, wo man lernt, wie man HTML und PHP wirklich sauber voneinander trennt. Bislang geschieht das bei mir eher solala, aber nicht wirklich konsequent. Wichtig wäre deutsche Sprache.
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
898
Ich konnte mich bisher mit noch keinem Framework anfreunden.
Das war mir immer irgendwie zu globig. Der Zwang alles und jeden in ein Objekt pressen zu müssen missfällt mir da irgendwie.
Zum Spielen hab ich mir deshalb mal eine eigene Boilerplate zusammen gebastelt
https://github.com/schnoog/PHPBoilerPlate
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #5
Gibts da keine "einfache(re)" Möglichkeit? Ich bin gerne möglich unabhängig und tue mich schwer da mit was vorgegebenen zu arbeiten, dass ich darüber hinaus auch nicht verstehe.
 

dexter

Cloogshicer®
Teammitglied

Registriert
14 Juli 2013
Beiträge
5.308
Smarty ist extrem einfach und kann ausreichend, solltest Du mal eine Chance geben.
 

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107

hab mich heute mal an diesem Tutroial gewagt... doch ab dem Kapitel Layouts quittiert alles den Dienst...

sobald man die smtemplate.php bearbeitet und die $this->addTemplateDir...-Zeile hinzufügt und die gibt es einen Parse error, den ich partou nicht finde...
[src=php]
<?php

/* Smarty-Dateien laden */
require_once('smarty/Smarty.class.php');
require_once('smtemplate_config.php');


/* An dieser Stelle können Applikations spezifische Bibliotheken geladen werden
* Bsp: require(bib.lib.php);
* */

class SMTemplate extends Smarty {
/**
* Konstruktor.
* Erzeugt eine neue Smarty-Instanz und konfiguriert die Smarty-Pfade
*/

function __construct(){
parent::__construct();

global $smtemplate_config;
$this->template_dir = $smtemplate_config['template_dir'];
$this->addTemplateDir($smtemplate_config['layouts_dir']);
$this->compile_dir = $smtemplate_config['compile_dir'];
$this->cache_dir = $smtemplate_config['cache_dir'];
$this->config_dir = $smtemplate_config['config_dir'];
}

function render($template, $data = array(), $layout = 'page') {
foreach($data as $key => $value){
$this->assign($key, $value);
}

$content = $this->fetch($template . '.tpl');
$this->assign('__content', $content);

$this->display($layout . '.tpl');
}

}


?>
[/src]

index.php
[src=php]<?php

require_once('lib/smtemplate.php');

$data = array(
'user' => 'Coding Pioneers',
'date' => time()
);

$tpl = new SMTemplate();
$tpl->render('start');

?>[/src]

Error:
Fatal error: Uncaught Error: [] operator not supported for strings in F:\_MyWebServer\htdocs\www\smarty_test\lib\smarty\Smarty.class.php:791 Stack trace: #0 F:\_MyWebServer\htdocs\www\smarty_test\lib\smtemplate.php(23): Smarty->addTemplateDir('layouts') #1 F:\_MyWebServer\htdocs\www\smarty_test\index.php(10): SMTemplate->__construct() #2 {main} thrown in F:\_MyWebServer\htdocs\www\smarty_test\lib\smarty\Smarty.class.php on line 791

Versteh ich das aktuell richtig das er ein Problem mit der zeile "$this->addTemplateDir($smtemplate_config['layouts_dir']);" hat?
 

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
Klingt als wäre deine Config kaputt. Kannst du die smtemplate_config.php mal posten?
 

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107
Die entspricht copy paste dem verlinkten Tutorial

[src=php]
<?php

$smtemplate_config =
array(
'layouts_dir' => 'layouts',
'template_dir' => 'views/',
'compile_dir' => 'lib/smarty/templates_c/',
'cache_dir' => 'lib/smarty/cache/',
'config_dir' => 'lib/smarty/config/',
);
?>
[/src]

Ich habe immer einen step gemacht und dann im browser die seite aktuallisiert. Die Fehler traten erst auf nachdem ich die Zeile

"$this->addTemplateDir($smtemplate_config['layouts_dir']);"

hinzugefügt habe und dann laut tutorial die renderfunktion angepasst habe.

ich habe in der config auch schon ausprobiert, anstelle von von "'layouts_dir' => 'layouts'," >> "'layouts_dir' => 'layouts/'," zu schreiben
 

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
Ohne je Smarty benutzt zu haben: Ersetz mal diese Zeile [src=php]$this->template_dir = $smtemplate_config['template_dir'];[/src] durch eine von den beiden: [src=php]$this->addTemplateDir($smtemplate_config['template_dir']);
$this->addTemplateDir($smtemplate_config['template_dir'], 'one');[/src]
Die Smarty-Doku gibt an, dass [kw]$teplate_dir[/kw] nicht mehr verwendet werden sollte (und ab 3.1 unsichtbar ist).
 

KingJamez

Aktiver NGBler

Registriert
18 Juli 2013
Beiträge
501
Es gibt viele template engines. Smarty, Blade, Twig, etc.
Smarty ist eine der bekanntesten und beliebtesten. Ohne Englisch Kenntnisse wirst du aber mit keiner der engines weit kommen. Die Dokus sind alle Englisch, auf die bist du ja angewiesen.

"Alles und jeden in eine Class zu packen" hält aber Ordnung, und strukturiert deinen Code, wenn du es denn zulässt. Wenn du den View Ansatz willst, also eine renderengine. Kommst du um einen Controller kaum drum herum. Das einzige was dann noch fehlt wäre ein Model und zack hast du eine MVC Struktur die normalerweise auf Klassen basiert.
Würde hier erstmal auch ein Framework empfehlen, dann hast du eine saubere MVC Trennung und meist auch eine Render engine.
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
898
Läuft denn das?
index.php:
[src=php]
<?php

require_once( 'Smarty.class.php');

$smarty = new Smarty();

$smarty->setTemplateDir('./templates/');
$smarty->setCompileDir('./templates_c/');
$smarty->setConfigDir('./configs/');
$smarty->setCacheDir('./cache/');

$smarty->assign('name','Ned');

//** un-comment the following line to show the debug console
//$smarty->debugging = true;

$smarty->display('index.tpl');

?>
[/src]

index.tpl
Code:
Hello {$name}
 

venom2k6

NGBler

Registriert
15 Juli 2013
Beiträge
107
Läuft denn das?
index.php:
[src=php]
<?php

require_once( 'Smarty.class.php');

$smarty = new Smarty();

$smarty->setTemplateDir('./templates/');
$smarty->setCompileDir('./templates_c/');
$smarty->setConfigDir('./configs/');
$smarty->setCacheDir('./cache/');

$smarty->assign('name','Ned');

//** un-comment the following line to show the debug console
//$smarty->debugging = true;

$smarty->display('index.tpl');

?>
[/src]

index.tpl
Code:
Hello {$name}

funktioniert leider nicht, dafür müsste das komplette drum herum umstrukturiert werden. auf basis der jetzigen struktur aus dem tutorial brachte diese lösung keinen erfolg

Edit: Nun funktioniert es, in der

page.tpl

[src=html5]
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Home</title>
</head>

<body>
<header>
<h2>Header Content</h2>
<hr />
</header>

<div>
{$__content|minimize}
</div>

<footer>
<hr />
<h2>Footer Content</h2>
</footer>
</body>
</html>

[/src]

gibt es wohl ein Problem mit der zeile "{$__content|minimize}", somit ein Problem mit dem im Tutorial erstellten minimizer: "smarty_modifier_minimize.php" müssen irgendwo "selbstgeschriebene" Variablenmodifier eingebunden werden? denn das ging im Tutorial nicht hervor.

Ich habe nun erstmal die Zeile "{$__content|minimize}" entfernt, dann funktionierte auch @Raktorium-M ansatz beide Templateordner via addTemplateDir() einzubinden. VIELEN DANK!

EDIT2:
Nun muss ich herausfinden wie das mit Minimizer genau funktioniert, denn dieser soll ja den content in das page element einbauen

Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:F:\_MyWebServer\htdocs\www\smarty_test\layouts\page.tpl" on line 14 "{$__content|minimize}" unknown modifier 'minimize' <-- thrown in F:\_MyWebServer\htdocs\www\smarty_test\lib\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 14

bekomme ich nun angezeigt, wenn "{$__content|minimize}" in der page.tpl eingefügt wird

EDIT3: wenn ich "{$__content|minimize}" mit "{$__content}" lädt er den content
 
Zuletzt bearbeitet:
Oben