Variable lässt sich nicht global aufrufen

Musst du nicht die Variablen außerhalb der Funktion(en) und bevor du die Datein einbindest nicht zuerst mal definieren.

PHP:
<?php
/* Start Session */
session_start();
// Variablen hier definieren, dann sind sie global gültig!
$itemTitle = "";
$siteTitle = "";
/* Includes */
include('config.inc.php');
include('actions.inc.php');
?>

Später in der Funktion nimmst du dann nicht einfach $itemTitle oder $siteTitle sondern $GLOBALS["itemTitle"] und $GLOBALS["siteTitle"]. Wie saftmeister weiter vorne auch schon geschrieben hat.


NACHTRAG: Habe eben bemerkt daß das mit der Definition nicht stimmt, es reicht wenn man die Variablen in Verbindung mit $GLOBALS verwendet.

Was ich jetzt aber noch nicht gefunden habe ist wo du die Datei "blog_show.php" einbindest, denn in dieser wird ja der Wert für die Variable "itemTitle" erst ausgelesen.
 
Zuletzt bearbeitet:
blog_show.php wird in der index.php über die Funktion in der actions.inc.php eingebunden.

Die Variablen vordefinieren KANN man machen, ist aber nicht zwingend notwendig. Gibt halt dann nen schönen Fehler wenn man nicht vordefiniert. :)

Ich teste mal und mach hier dann einen Nachtrag. Soweit ich weiß, habe ich es aber auch schon mit der Definition via $GLOBALS['ItemTitle'] = ... versucht.

Nachtrag: Jo, wie befürchtet. Mit $GLOBALS['ItemTitle'] = htmlspecialchars($Blog['title']); geht's auch nicht.
 
Dann mal nen alternativer Vorschlag: Mach es doch "vernünftig" anstatt hier mit GLOBALS rumzuhantieren (Das ist nämlich sehr schlechte Praxis!)

Mal eine Alternativimplementierung:
PHP:
<?php
// web/index.php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

// Twig als Templateengine
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/views',
));

// Die Controller
$app->get('/blog', function () use ($app) {
    return $app['twig']->render('blog.twig', array(
        'title' => 'Blog',
    ));
});

$app->get('/showblog/{id}', function ($id) use ($app) {
    return $app['twig']->render('showblog.twig', array(
        'title' => 'Showblog',
		'id' => $id, // So natürlich nicht sinnvoll; Anstelle der ID sollte der entsprechende Blogtext aus der Datenbank geladen werden
    ));
});

$app->get('/blogarchive', function () use ($app) {
    return $app['twig']->render('blogarchive.twig', array(
        'title' => 'Blogarchive',
    ));
});

$app->run();

HTML:
 // web/views/blog.twig
<!DOCTYPE html> 
<html lang="de"> 

<head> 
    <title>{{ title }}</title>
</head>

<body>
	<div id="sidebar">{% include 'sidebar.twig' %}</div>
</body>

Silex: http://silex.sensiolabs.org/doc/intro.html
Twig: http://silex.sensiolabs.org/doc/providers/twig.html
 
Zurück