Ошибка при использовании Slim framework и шаблона Twig

Я пытаюсь заставить Slim работать с системой шаблонов Twig, это часть моей index.php

// Twig [Template]
require 'Extras/Views/Twig.php';
TwigView::$twigDirectory = __DIR__ . '/vendor/Twig/lib/Twig/';

//Slim
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim(array(
    'view' => $twigView
));

А это моя структура

Extras
    |_Views
        |_Twig.php
Slim
templates
vendor
    |_Twig
        |_lib
            |_Twig
index.php

Я пробовал несколько раз с другими конфигурациями и искал покупку, я ВСЕГДА получаю эту ошибку:

Fatal error: Class 'Slim\View' not found in C:\wamp\www\slim\Extras\Views\Twig.php on line 43

Может ли кто-нибудь помочь мне здесь? Все примеры, которые я нашел, использовали композитор


person Gonz    schedule 13.11.2012    source источник


Ответы (3)


Ок, решаю. Это решение:

// Slim PHP
require "Slim/Slim.php";
\Slim\Slim::registerAutoloader();

// Twig
require "Twig/lib/Twig/Autoloader.php";
Twig_Autoloader::register();

// Start Slim.
/** @var $app Slim */
$app = new \Slim\Slim(array(
    "view" => new \Slim\Extras\Views\Twig()
));

И это моя структура сейчас.

Slim
|_Extras
    |_Views
        |_Twig.php
|_Slim
templates
Twig
 |_lib
   |_Twig
      |_Autoloader.php
index.php

¡Я надеюсь, что это поможет кому-то еще!

person Gonz    schedule 16.11.2012
comment
ваша проблема уже решена...:) извините за поздний ответ, я очень занят, поэтому я не вижу ваш запрос в моем блоге indoallcode.com - person viyancs; 19.11.2012
comment
Спасибо, у меня была такая же проблема! - person Adam Hopkinson; 05.05.2013
comment
Как раз то, что мне было нужно, теперь мне интересно, как я буду устанавливать каталог шаблонов, или если мне это нужно, или где он по умолчанию. - person CTS_AE; 12.05.2014
comment
@CTS_AE, возможно, вам следует задать новый вопрос, но попробуйте следующее: twig.sensiolabs.org/doc/ api.html require_once '/path/to/lib/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader, array( 'cache' => '/path/to/compilation_cache', )); - person Gonz; 13.05.2014
comment
@gonzalon Я хотел отредактировать свой последний комментарий, но не смог, наверное, мне просто нужно было дважды опубликовать? Однако я нашел ответ при инициализации прохода Slim в 'templates.path' => '../private/templates/'. Он находится в документации slim, если вы ищете templates.path - person CTS_AE; 13.05.2014

Теперь Slim-Extras УСТАРЕЛ, мы должны использовать Slim-Views (https://github.com/codeguy/Slim-Views):

require "Slim/Slim.php";
\Slim\Slim::registerAutoloader();

$slim = new \Slim\Slim( array(
        'debug' => false, 
        'templates.path' => 'fooDirTemplates', 
        'view' => '\Slim\Views\Twig'
    ));

$twigView = $slim->view();
$twigView->parserOptions = array(
        'debug' => false
    );
$twigView->parserDirectory = 'Twig';
$twigView->parserExtensions = array(
        '\Slim\Views\TwigExtension'
    );

$slim->notFound( 'fooNotFoundFunction' );
$slim->error( 'fooErrorFunction' );

// SLIM routes...

$slim->run();
person Virgili Garcia    schedule 02.06.2014

Если кто-то еще занимается этим вопросом. Проблема для меня заключалась в том, что я установил как slim/views, так и slim/twig-view. Я удалил slim/views и все заработало

person Johannes B    schedule 16.05.2016
comment
Добро пожаловать в Stackoverflow. Не могли бы вы немного расширить ответ, чтобы коллеги-программисты поняли, как это помогает решить проблему. - person Nagama Inamdar; 16.05.2016
comment
Я считаю, что это конфликт пространств имен — оба пакета slim/views и slim/twig-view на packagist предлагают класс \Slim\Views\Twig, поэтому вы не можете использовать оба пакета одновременно без некоторых несоответствий. Пакет slim\views поддерживает как Twig, так и Smarty, и поддерживается лучше, поскольку является официальным тонким пакетом. Composer не волнует, имеют ли два пакета одинаковые классы в пространстве имен — он просто будет использовать тот, который найдет первым, без жалоб, и вы можете получить гибрид нескольких пакетов, если вы не будете осторожны. - person Jason; 15.06.2016
comment
@Beanz - это тоже было проблемой для меня. Из разных мест, которые я читал о slim и twig, было непонятно, но когда я добавил slim/twig-view и удалил slim/views, все заработало. - person Hans; 12.08.2016