2017-03-04 3 views
0

Wie kann ich eine Zweigvorlage verknüpfen? Etwas wie folgt aus:Wie verknüpfe Zweigvorlage in href?

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

Gibt es eine Möglichkeit, dies zu tun oder muss ich URL-Rewriting benutzen?

Antwort

2

Ihre Frage. Zweig ist eine Vorlagensprache und kann nicht als eigenständige Webseite wiedergegeben werden.

Sie möchten wahrscheinlich nicht direkt mit einer .twig Datei verknüpfen (in der Tat, .twig Dateien sollten nicht direkt in Ihrem öffentlichen Dokument Stamm überhaupt zugänglich sein)! Stattdessen benötigen Sie PHP-Code (entweder ein eigenständiges Skript oder vorzugsweise eine front controller route), die Ihre Vorlage im Kontext Ihrer Anwendung rendert und die vollständig gerenderte Seite unter einer von Ihnen angegebenen URL zurückgibt.

Zum Beispiel in dem Slim Rahmen, könnten Sie so etwas wie zu tun:

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

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

Siehe this article für weitere Informationen über eine Abkehr von verfahrens Spaghetti-Code und das Denken in MVC Bedingungen.

0

Wenn Sie twig verwenden, muss die Vorlage analysiert werden, so dass Sie nicht in der Art und Weise verknüpfen können, wie Sie es versucht haben. In Symfony 2 würden Sie etwas wie {{ path('name_of_path') }} verwenden, aber Sie müssen zuerst Ihre Route benennen.

Sie die Route mit name="event" mit Anmerkungen nennen kann:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

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

Im Zweig Vorlage Link mit diesem:

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

Mehr Infos hier: http://symfony.com/doc/current/templating.html#linking-to-pages

1

Sie Template-Controller für diese verwenden können. Fügen Sie einfach eine neue Route hinzu, geben Sie den Vorlagen-Controller FrameworkBundle:Template:template und die Zweigvorlage an.

routes.yml

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

und diesen Link ändern:

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

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

+0

Dumme Frage, aber wo stelle ich die 'routes.yml'? Ich habe dies in PHP aus den verknüpften Dokumenten getan, aber ich bekomme 'Uncaught Twig_Error_Syntax: Unknown" Pfad "-Funktion –

Verwandte Themen