В Silex2 я могу использовать шаблоны Twig, но я хочу использовать PHP-движок Twig вместо синтаксиса Twig. Например, это руководство описывает, как это сделать для Symfony, но не Silex 2 .
Мой Silex index.php
выглядит так:
$app->register(new Silex\Provider\TwigServiceProvider(), array( 'twig.path' => __DIR__.'/views', )); $app->get('/', function() use ($app) { return $app['twig']->render('index.html.php', array( 'name' => 'Bob', )); });
Мой index.html.php
выглядит так:
<p>Welcome to the index <?php echo $view->name; ?></p>
Когда я запускаю приложение в браузере и просматриваю источник, я вижу буквальную строку <?php echo $view->name; ?>
<?php echo $view->name; ?>
который не был выполнен.
Я подозреваю, что может быть настройка конфигурации Twig, чтобы сказать, что я хочу использовать шаблоны стиля PHP. Чтобы уточнить, если я использую синтаксис Twig, например:
<p>Welcome to the index {{ name }} </p>
Затем он работает, и я вижу имя Bob, поэтому я знаю, что это не проблема веб-сервера или PHP.
Этот код не работал для меня:
$app['template'] = function($app) use($settings) { $loader = new \Symfony\Component\Templating\Loader\FilesystemLoader([ BASE_DIR . $settings->templates_path ]); $nameParser = new \Symfony\Component\Templating\TemplateNameParser(); $templating = new \Symfony\Component\Templating\PhpEngine($nameParser, $loader); return $templating; };
хотя, это тоже не работает:
$app->register(new NS\ViewServiceProvider(), [ 'view.path' => BASE_DIR . $settings->templates_path, ]);
ViewServiceProvider
:
class ViewServiceProvider implements ServiceProviderInterface { public function register(Container $app) { $app['view'] = function($app) { $engine = $app['view.engine']; $helpers = isset($app['view.helpers']) ? $app['view.helpers'] : array(); $helpers = array_merge($helpers, $app['view.default_helpers']); $engine->setHelpers($helpers); return $engine; }; $app['view.engine'] = function($app) { return new PhpEngine($app['view.parser'], $app['view.loader']); }; $app['view.loader'] = function($app) { $paths = isset($app['view.path']) ? $app['view.path'] : array(); return new FileSystemLoader($paths); }; $app['view.parser'] = function() { return new TemplateNameParser; }; $app['view.default_helpers'] = function() { return array( new \Symfony\Component\Templating\Helper\SlotsHelper ); }; } }
Оба view.php
ошибку, которая не может найти файл view.php