【问题标题】:Twig generate url / Routing error / Function unknowTwig 生成 url / 路由错误 / 功能未知
【发布时间】:2017-11-26 16:21:17
【问题描述】:

我正在使用 Silex 1.2 和 Twig 1.0。

我正在尝试使用 Twig 生成一个 URL。

<a href="{{ path('signUp') }}">Sign Up</a>

但是我得到这个错误:

Twig_Error_Syntax Unknown "path" function.

所以,就像在这篇文章 (Silex - Twig_Error_Syntax: The function "path" does not exist) 上一样,我在我的 boostrap.php 上添加了这个。

$app->register(new UrlGeneratorServiceProvider());
$app['twig']->addFunction(new \Twig_SimpleFunction('path', function($url) use ($app) {
    return $app['url_generator']->generate($url);
}));

但我得到这个错误:

RouteNotFoundException Unable to generate a URL for the named route "signUp" as such route does not exist.

路由文件

<?php

$routes = $app['controllers_factory'];

$routes->get('/', function () use ($app){
    return $app['twig']->render('home.html.twig');
});

$routes->get('/signUp', function () use ($app){
    return $app['twig']->render('signUp.html.twig');
});

$routes->get('/signIn', function () use ($app) {
    return $app['twig']->render('signIn.html.twig');
});

return $routes;

你能帮帮我吗?

谢谢!

【问题讨论】:

  • 您没有提供路线名称。有关bind() 方法,请参阅examples
  • 确实,非常感谢!

标签: php symfony twig silex


【解决方案1】:

/signUp 路径与您在 path 中提供的路由名称不同。您可能想要使用 bindnamed route,如下所示:

$routes->get('/signUp', function () use ($app){
    return $app['twig']->render('signUp.html.twig');
})->bind('signUp');

【讨论】:

  • 是的,这就是问题所在。谢谢!
【解决方案2】:

将此添加到config/services.yaml 为我解决了这个问题:

services:
    Twig\Environment:
        calls:
            - [addExtension, ['@Symfony\Bridge\Twig\Extension\RoutingExtension']]

    Symfony\Bridge\Twig\Extension\RoutingExtension:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多