代码之家  ›  专栏  ›  技术社区  ›  Royce

Twig生成url/路由错误/功能未知

  •  1
  • Royce  · 技术社区  · 8 年前

    我使用的是Silex 1.2和Twig 1.0。

    我正在尝试用Twig生成URL。

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

    然而,我得到了这个错误:

    Twig\u Error\u语法 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;
    

    你能帮助我吗?

    谢谢!

    2 回复  |  直到 8 年前
        1
  •  0
  •   dbrumann    8 年前

    路径 /signUp 与路径中提供的路由名称不同。你可能想要一个 named route 使用 bind 这样地:

    $routes->get('/signUp', function () use ($app){
        return $app['twig']->render('signUp.html.twig');
    })->bind('signUp');
    
        2
  •  0
  •   darkdragon    6 年前

    config/services.yaml 帮我解决了:

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