2015-06-05 6 views
3

Я только что обновил свои зависимости для моего приложения Silex и вдруг один из моих шаблонов неудачу с ошибкой:Где появилась функция Twig «render» в шаблонах?

Twig_Error_Syntax: The function "render" does not exist. 

Это работает нормально, прежде чем я выполнил composer update. С выходом композитора были обновлены следующим:

- Removing symfony/options-resolver (v2.6.7) 
- Installing symfony/options-resolver (v2.7.0) 
    Downloading: 100% 

- Removing symfony/intl (v2.6.7) 
- Installing symfony/intl (v2.7.0) 
    Downloading: 100% 

- Removing symfony/form (v2.6.7) 
- Installing symfony/form (v2.7.0) 
    Downloading: 100% 

- Removing symfony/translation (v2.6.7) 
- Installing symfony/translation (v2.7.0) 
    Downloading: 100% 

- Removing symfony/validator (v2.6.7) 
- Installing symfony/validator (v2.7.0) 
    Downloading: 100% 

- Removing symfony/security (v2.6.7) 
- Installing symfony/security (v2.7.0) 
    Downloading: 100% 

- Removing symfony/finder (v2.6.7) 
- Installing symfony/finder (v2.7.0) 
    Downloading: 100% 

- Removing symfony/process (v2.6.7) 
- Installing symfony/process (v2.7.0) 
    Downloading: 100% 

- Removing symfony/twig-bridge (v2.6.7) 
- Installing symfony/twig-bridge (v2.7.0) 
    Downloading: 100% 

- Removing symfony/web-profiler-bundle (v2.6.7) 
- Installing symfony/web-profiler-bundle (v2.7.0) 
    Downloading: 100% 

- Removing symfony/stopwatch (v2.6.7) 
- Installing symfony/stopwatch (v2.7.0) 
    Downloading: 100% 

Код, который работал в моем шаблоне есть:

{{ render (url('navigation')) | raw }} 

Я не могу найти ничего, что предполагает эта функция устарела или то, что это было заменен. Я не уверен, какие из обновлений вызвали эту проблему, но я подозреваю, что это Twig-Bridge. Я использую версию Twig 1.18.1.

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

Я признаю, что я должен был привязать версию пакетов, которые я использую, чтобы я мог протестировать обновления более методичным образом.

Спасибо, Рассел

Update 1:

обновление, чтобы обеспечить более некоторый контекст.

composer.json

"require": { 
    "silex/silex": "~1.2", 
    "silex/web-profiler": "1.0.*@dev", 

    "ruflin/elastica": "1.3.*@dev", 
    "dflydev/doctrine-orm-service-provider": "1.0.*@dev", 

    "monolog/monolog": "1.9.1", 

    "twig/twig": "1.18.*@dev", 
    "twig/extensions": "1.2.*@dev", 

    "symfony/yaml": "~2.4", 
    "symfony/console": "~2.4", 
    "symfony/twig-bridge": "~2.4", 
    "symfony/config": "~2.4", 
    "symfony/monolog-bridge": "~2.4", 
    "symfony/serializer": "~2.4", 
    "symfony/form": "~2.4", 
    "symfony/validator": "~2.4", 
    "symfony/translation": "~2.4", 
    "symfony/security": "~2.4", 

    "macedigital/silex-jms-serializer": "1.0.0", 
    "jdesrosiers/silex-jms-serializer-provider": "~0.1", 

    "mheap/silex-gravatar": "dev-master", 
    "mheap/gravatar-php": "dev-master", 
    "mheap/silex-assetic": "1.0.4", 

    "knplabs/knp-menu": "2.0.*@dev", 

    "predis/service-provider": "dev-master", 

    "pear/archive_tar": "dev-master", 
    "pear/pear_exception": "1.0.*@dev", 
    "wapmorgan/unified-archive": "dev-master", 

    "sybio/image-workshop": "dev-master", 
    "sybio/gif-frame-extractor": "dev-master", 
    "sybio/gif-creator": "dev-master", 

    "paypal/rest-api-sdk-php" : "*", 

    "kilte/silex-pagination": "1.1.*@dev", 

    "thispagecannotbefound/silex-markdown-parser": "dev-master", 

    "erusev/parsedown": "~1.4", 
    "erusev/parsedown-extra": "dev-master" 
} 

зарегистрироваться услуги Twig и UrlGenerator, используя следующие:

$app->register (new \Silex\Provider\UrlGeneratorServiceProvider()); 
$app -> register (new \Silex\Provider\TwigServiceProvider(), array(
     'twig.options' => array("debug" => true) 
    )); 

$app['twig'] = $app -> share($app -> extend('twig', function($twig, $app) { 
     $twig -> addExtension(new \Twig_Extension_Debug()); 
     return $twig; 
    })); 

сам Прут все еще работает, и любой шаблон, который не имеет «{{оказывают}} 'в нем будет работать без проблем.

ответ

4

У меня была такая же проблема. Вы зарегистрировали HttpFragmentServiceProvider перед регистрацией веб-профайлера? Это не очевидно, но в документации упоминается об этом here. Он работал хорошо для меня.

С уважением

+0

потрясающий! ту же ошибку и после добавления регистра $ app-> (новый HttpFragmentServiceProvider()), ошибка исчезла! –

+0

Отлично, это было исправление. Благодарю. –

0

Убедитесь, что вы:

  • twig/twig (Может быть, вы удалили его перед выполнением обновления композитор) и symfony/twig-bridge установлен с помощью композитора.
    и
  • TwigServiceProvider() Регистрация и UrlGeneratorServiceProvider()

    $app->register(new Silex\Provider\TwigServiceProvider(), array( 
        'twig.path' => \__DIR__.'/path/to/templates/', 
    )); 
    
    $app->register(new UrlGeneratorServiceProvider()); 
    

     

+1

Благодарим за это. У меня все еще есть '' 'twig/twig''' и' '' symfony/twig-bridge''' в моем файле composer.json. Эти две службы зарегистрированы. Я обновляю свой исходный вопрос этими битами. –

Смежные вопросы