Создание веточки в пространстве имен

0

Я сталкиваюсь с некоторыми проблемами, пытаясь понять, как использовать 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'));
    }
}
Теги:
namespaces
twig

1 ответ

0

Хорошо, оказалось, что всякий раз, когда я пытаюсь включить области имен ветвей в свой класс Template, я делал это неправильно. Рассматривая другие проекты, которые моя организация собрала, получается, что просто добавление

use Twig_Environment;
use Twig_Loader_Filesystem;

для класса достаточно. Я не был уверен, что мне действительно нужно было что-то добавить, поскольку был включен Autoloader, или мне пришлось включить часть пути, например Twig_Twig/Loader/Filesystem или что-то в этом роде. Очевидно, никто из них не работал.

  • 2
    Это работает, но настоящая проблема: php предполагал, что вы имели в виду Template\Twig_Environment . Вы можете добавить префикс класса корневого пространства имен в файл пространства имен, например: \Twig_Environment .
  • 0
    Спасибо, я попробую это!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню