如何在href中链接twig模板?

时间:2017-03-04 19:18:07

标签: php html symfony twig

如何链接树枝模板?像这样:

<a href="Events.twig" class="btn btn-primary btn-lg square" role="button">Learn more</a>

有没有办法做到这一点,还是我必须使用URL重写?

4 个答案:

答案 0 :(得分:2)

您可以使用模板控制器。只需添加新路由,指定模板控制器FrameworkBundle:Template:template和twig模板。

<强> routes.yml

qwerty:
    path: /qwerty
    defaults:
        _controller: FrameworkBundle:Template:template
        template:    Events.twig

并将此链接更改为:

<a href="{{ path('qwerty') }}" class="btn btn-primary btn-lg square" role="button">Learn more</a>

http://symfony.com/doc/current/templating/render_without_controller.html

答案 1 :(得分:2)

你的问题在概念上存在缺陷。 Twig是一种模板语言,无法单独呈现为网页。

您可能不想直接链接到.twig文件(事实上,.twig文件根本不应该直接在您的公共文档根目录中访问)!相反,您需要一些PHP代码(独立脚本,或者最好是front controller route),它们在您的应用程序的上下文中呈现您的模板,并在您指定的URL处返回完全呈现的页面。

例如,在Slim框架中,您可能会执行以下操作:

// Render Twig template in route
$app->get('/events', function ($request, $response, $args) {
    return $this->view->render($response, 'events.html.twig');
});

// Run app
$app->run();

有关放弃程序性意大利面条代码和使用MVC术语思考的更多信息,请参阅this article

答案 2 :(得分:0)

如果您使用twig,则需要解析模板,因此您无法以您尝试的方式进行链接。在Symfony 2中你会使用类似{{ path('name_of_path') }}的东西,你需要先命名你的路线。

您可以使用带注释的name="event"命名路线:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

/**
 * Matches /event exactly
 *
 * @Route("/event", name="event")
 */
public function eventAction()
{
    // ...
}

在枝条模板链接中:

<a href="{{ path('event') }}">Event</a>

更多信息: http://symfony.com/doc/current/templating.html#linking-to-pages

答案 3 :(得分:0)

你做不到。进行另一个呈现Events.twig的控制器操作,并使用path()链接到相应的路径:

<a href="{{ path('your_route_name') }}" class="btn btn-primary btn-lg square" role="button">Learn more</a>