Я сталкиваюсь с некоторыми проблемами, пытаясь понять, как использовать Twig определенным образом. Я пытаюсь написать класс представления, который я могу использовать в своем приложении независимо от того, какая система шаблонов установлена, таким образом, единственное, что мне нужно было бы изменить, это сами шаблоны и класс представления.
Однако, когда я пытаюсь создать объекты twig в классе, я получаю Fatal error: Class 'Template\Twig_Loader_Filesystem' not found
ошибок, и я не совсем уверен, что мне не хватает.
Может ли кто-нибудь указать мне в правильном направлении?
Вот что у меня есть до сих пор...
composer.json
{
"name": "Movies",
"description": "Find movies",
"require": {
"ext-curl": "*",
"twig/twig": "~1.0"
},
"autoload": {
"classmap": [
"app/classes"
]
}
}
index.php
require_once 'app/app.php';
use Template\Template;
echo Template::render('hello.html', array('name' => 'bob', 'age' => '33'));
Приложение /app.php
define('APP_DIRECTORY', __DIR__ . '/..');
require_once APP_DIRECTORY . '/vendor/autoload.php';
приложение/классы/Template.class.php
namespace Template;
class Template {
static function render($template_name, $template_data = array()) {
$loader = new Twig_Loader_Filesystem(APP_DIRECTORY . '/app/templates');
$twig = new Twig_Environment($loader);
return $twig->render('hello.html', array('name' => 'lisa', 'age' => '33'));
}
}
Хорошо, оказалось, что всякий раз, когда я пытаюсь включить области имен ветвей в свой класс Template, я делал это неправильно. Рассматривая другие проекты, которые моя организация собрала, получается, что просто добавление
use Twig_Environment;
use Twig_Loader_Filesystem;
для класса достаточно. Я не был уверен, что мне действительно нужно было что-то добавить, поскольку был включен Autoloader, или мне пришлось включить часть пути, например Twig_Twig/Loader/Filesystem
или что-то в этом роде. Очевидно, никто из них не работал.
Template\Twig_Environment
. Вы можете добавить префикс класса корневого пространства имен в файл пространства имен, например:\Twig_Environment
.