Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Twig中使用PHP模板引擎而不是Silex 2中的Twig语法_Php_Symfony_Twig_Silex - Fatal编程技术网

如何在Twig中使用PHP模板引擎而不是Silex 2中的Twig语法

如何在Twig中使用PHP模板引擎而不是Silex 2中的Twig语法,php,symfony,twig,silex,Php,Symfony,Twig,Silex,在Silex2中,我可以使用Twig模板,但我想使用Twig的PHP引擎,而不是Twig语法。例如,介绍了如何为Symfony而不是Silex 2执行此操作 我的Silexindex.php看起来像: $app->register(new Silex\Provider\TwigServiceProvider(), array( 'twig.path' => __DIR__.'/views', )); $app->get('/', function() use ($ap

在Silex2中,我可以使用Twig模板,但我想使用Twig的PHP引擎,而不是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',
    ));
});
<p>Welcome to the index <?php echo $view->name; ?></p>
我的
index.html.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',
    ));
});
<p>Welcome to the index <?php echo $view->name; ?></p>
尽管如此,这也不起作用:

$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
文件

下面是如何在Silex中注册twig的:如果不想使用它,可以取消注册。实际上,我很想知道为什么你喜欢写
而不是
{{name}
?这样容易多了!正如您在Silex中所看到的,不是内置的。你需要。@mickdev如果你不想使用Twig,你不需要“注销”它,你只需要不注册它。默认情况下不启用它。另外,正如所指出的,Twig没有“PHP引擎”,Twig是一个模板引擎,如果您不想使用它并且更喜欢使用,则需要为它创建一个并注册它(就像您可以使用现成的Twig提供程序一样)。附言:我不会走那条路…@mTorres我想我们谈论的是同一件事,我们说话的方式只是不同而已。无论如何,阿兰·天宝已经“翻译”了我最初的想法。也许会有帮助。