À l'aide de Rameaux avec un Slim application
Je suis en utilisant le Slim cadre d'un simple site web que je suis en développement et aussi à utiliser le moteur de template Twig.
J'ai installé Slim, Slim Extras et Twig et mon index.php
fichier a le contenu suivant:
<?php
/* Require and initialize Slim and Twig */
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
require 'Twig/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$app = new \Slim\Slim(array(
'view' => new \Slim\Extras\Views\Twig()
));
/* Application routes */
$app->get('/', function () {
$pageTitle = 'hello world';
$body = 'sup world';
$app->view()->setData(array('title' => $title, 'body' => $body));
$app->render('index.html');
});
/* Run the application */
$app->run();
Toutefois, cela entraîne une erreur: Fatal error: Call to a member function view() on a non-object in C:\xampp\htdocs\index.php on line 18
Je vais vous avouer que je n'ai aucune idée de comment bien utiliser Twig avec Slim. J'ai suivi un StackOverflow post sur la structure de répertoire et comment charger Twig, mais je ne sais pas comment ajouter des données personnalisées de vue et je ne sais pas d'où la vue sur les fichiers pour les Rameaux doivent être stockés.
J'ai googlé mais beaucoup de l'information est pour les anciennes versions de Slim et du Slim de la documentation elle-même est absente.
Merci!
OriginalL'auteur James Dawson | 2013-01-29
Vous devez vous connecter pour publier un commentaire.
C'est une simple erreur php. Vous essayez d'accéder à une variable dans une fermeture qui n'est pas importé dans son champ d'application, le corriger comme ceci:
OriginalL'auteur Maerlyn
Plus récent Slim framework (je crois 2.2+) mise en page venez en tant que compositeur de composants. Et la documentation de Twig est un peu vague comme à où mettre quoi et comment l'expliquer à des objets. M'a fallu un certain temps pour comprendre comment initialiser simple système de fichiers de l'environnement. Espérons que cela aide si quelqu'un marche sur cette question:
Exemple:
Dans un travail/dossier en cours, j'ai suivantes dossiers/fichiers:
Templates
est où je vais mettre les fichiers de modèle pour Twig,vendor
est un dossier sur lequel les composants de résidence (Slim, Twig ... le reste),index.php
est Slim application etcomposer.json
est fichier de contrôle pour le compositeur.Mon initialisation se présente comme suit:
note Twig_Loader_Filesystem avec chargeur (m'a fallu du temps pour comprendre ce qui est faux puisque les Rameaux premier exemple utilise
$loader = new Twig_Loader_String();
et il ne serait pas rendu à partir d'un fichier jusqu'à ce que vous apercevez le fait que vous avez écrit une chose et de s'attendre à faire un autre.de rendu va comme suit:
ou:
ne pas oublier de: function ( /* paramètres */) utilisation($app, $twig) pour atteindre le rameau objet.
De sécurité:
Noter qu'il est plus sûr de le faire .les templates php de .html Slim ne couvre pas/protéger les dossiers qui existent dans le système de fichiers, par exemple apache va envoyer des fichiers directement à la non-consultation Slim à tous, vous pouvez également placer des modèles de l'espace web.
OriginalL'auteur ljgww