Template Twig ne peut pas inclure des templates php
J'ai rencontré un problème, qui pour moi est assez peu clair et difficile à comprendre. J'ai essayé de faire widget de calendrier, qui est censé être afficher sur chaque page de mon site. Donc, je pense qu'il devrait être en moyenne de modèle (pas d'arguments, pas de chaque site). J'ai essayé de faire comme template twig. J'ai réussi à rendre le calendrier, mais j'ai eu un problème avec l'acquisition de l'objet date (ce qui est nécessaire pour obtenir les arguments appropriés pour le rendu de calendrier). Après un court moment, j'ai essayé de faire un template php, qui sera compris par les principaux template twig (mise en page.html.twig). Il n'a pas de succès. J'ai activé le moteur php dans le fichier config.yml, mais n'aide pas - template php est en fait inclus, mais comme un fichier normal, pas de fichier php (pas analysée comme script php), (mais moteur php fonctionne, j'ai essayé de rendre template php à partir d'un contrôleur cela fonctionne). J'ai lu aussi qu'il est possible d'inclure un résultat à partir d'un autre contrôleur dans le modèle, mais pour moi ce n'est pas la bonne solution, je n'ai pas essayé (template php devrait s'adapter à ce problème).
Que dois-je faire pour résoudre ce problème?
De configuration principal.yml
imports:
- { resource: parameters.ini }
- { resource: security.yml }
framework:
#esi: ~
translator: { fallback: %locale% }
secret: %secret%
charset: UTF8
router: { resource: "%kernel.root_dir%/config/routing.yml" }
form: true
csrf_protection: true
validation: { enable_annotations: true }
templating: { engines: ['twig', 'php'] }
session:
default_locale: %locale%
auto_start: true
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
# java: /usr/bin/java
filters:
cssrewrite: ~
# closure:
# jar: %kernel.root_dir%/java/compiler.jar
# yui_css:
# jar: %kernel.root_dir%/java/yuicompressor-2.4.2.jar
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
# Swiftmailer Configuration
#swiftmailer:
# transport: %mailer_transport%
# host: %mailer_host%
# username: %mailer_user%
# password: %mailer_password%
jms_security_extra:
secure_controllers: true
secure_all_services: false
# services:
# TpsaMailer:
# class: Tpsa\TestBundle\Controller\MailerController
mise en page.html.twig
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
{% block stylesheets %}
<link rel="stylesheet" type="text/css"
href="{{ asset('bundles/tpsablog/css/main.css') }}">
{% endblock %}
{% block javascripts %}
<!-- empty javascripts -->
{% endblock %}
<title>
{% block title %}
{% trans %}blog.programisty.duga{% endtrans %}
{% endblock %}
</title>
</head>
<body>
<div id="all">
<div id="top">
{% block top %}
<div style="float: left" class="right">
<img style="float: left;
vertical-align: middle; margin: 8px
8px 8px 0px" src="{{ asset('bundles/tpsablog/images/glider.png') }}">
<h4>{% trans %}blog.programisty.duga{% endtrans %}</h4>
<div style="font-size: 8px">
{% trans %}ciekawosc.wiedza.niewygodne{% endtrans %}
<!-- Ciekawość i wiedza... To, co jest niewygodne dla
władzy -->
</div>
</div>
<div style="float: right">
<a href="{{ path('HomePage') }}">{% trans %}strona.glowna{% endtrans %}</a>
<a href="{{ path('AboutPage') }}">{% trans %}o.mnie{% endtrans %}</a>
<a href="{{ path('TBB_mess_add') }}">{% trans %}napisz.do.mnie{% endtrans %}</a>
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
{{ app.user.username }}
<a href="{{ path('TBB_tag_list_homepage') }}">{% trans %}tagi{% endtrans %}</a>
<a href="{{ path('TBB_mess_list_homepage') }}">{% trans %}wiadomosci{% endtrans %}</a>
<a href="{{ path('logout') }}">{% trans %}wyloguj{% endtrans %}</a>
{% else %}
<a href="{{ path('login') }}">{% trans %}zaloguj{% endtrans %}</a>
{% endif %}
<div style="text-align: center; margin: 10px 0px">
<a href="{{ path('TBB_rss') }}">
<img src="{{ asset('bundles/tpsablog/images/rss.png')
}}" alt="rss channel">
</a>
<a href="http://www.facebook.com/duga.chernobyl"
target="_blank">
<img src="{{ asset('bundles/tpsablog/images/facebook.png') }}"
alt="facebook">
</a>
<a href="http://www.youtube.com/user/DugaEye"
target="_blank">
<img src="{{ asset('bundles/tpsablog/images/youtube.png')
}}" alt="youtube">
</a>
</div>
</div>
<div style="clear:both"></div>
{% endblock %}
</div>
<div id="frame">
<div id="left">
{% block content %}
{% trans %}TODO{% endtrans %}
{% endblock %}
</div>
<div id="right">
{% block panel %}
<div style="text-align: left">
<div style="text-align: center">
<h4>{% trans %}profil.duga.eye{% endtrans %}</h4>
<img style="width: 100px" src="{{
asset('bundles/tpsablog/images/photo.jpg')
}}">
</div>
<div style="font-weight:900; margin-top: 10px">
<ul>
<li>{% trans %}wiek{% endtrans %}: 21</li>
<li>{% trans %}miejsce{% endtrans %}: /dev/null</li>
<li>{% trans %}zainteresowania{% endtrans %}: {% trans %}programowanie.hacking.filozofia{% endtrans %}</li>
<li>{% trans %}email{% endtrans %}: <a
href="mailto:duga(dot)eye(at)gmx(dot)com">Mail</a>
</ul>
</div>
</div>
<h3>{% trans %}reklamy{% endtrans %}</h3>
{% include '::calendar.html.php' %}
{% endblock %}
</div>
</div>
<div id="footer">
{% block footer %}
{% trans %}footer{% endtrans %}
{% endblock %}
</div>
</div>
</body>
</html>
Comment obtenir les paramètres appropriés, de décalage, de nombre, koniec, aktualny à partir de php objet Date? (maintenant, il est codé en dur)
calendrier.html.twig
{% include '::calendar.html.php' %}
{% set offset = 1 %}
{% set number = 28 %}
{% set koniec = 7 - ((offset + number) % 7) %}
{% set aktualny = 13 %}
<table border="0" style="text-align: center">
<thead>
<tr>
<td>{% trans %}pn{% endtrans %}</td>
<td>{% trans %}wt{% endtrans %}</td>
<td>{% trans %}sr{% endtrans %}</td>
<td>{% trans %}czw{% endtrans %}</td>
<td>{% trans %}pt{% endtrans %}</td>
<td>{% trans %}sob{% endtrans %}</td>
<td>{% trans %}nie{% endtrans %}</td>
</tr>
<tbody>
{% if offset % 7 != 0 %}
<tr>
{% for i in range(0,offset-1,1) %}<td><br></td>{% endfor %}
{% endif %}
{% for i in 1..number %}
{% if (i+offset)%7 == 1 %}<tr>{% endif %}
<td>
{% if i == aktualny %}
<span style="color: red">{{ i }}</span>
{% else %}
{{ i }}
{% endif %}
</td>
{% if (i+offset)%7 == 0 %}</tr>{% endif %}
{% endfor %}
{% if koniec < 7 %}
{% for i in 1..koniec %}
<td><br></td>
{% endfor %}
</tr>
{% endif %}
</tbody>
</table>
template php qui doit être exécuté en tant que php template de template twig , mais il n'est pas interprétée et exécutée comme un modèle.
calendar.html.php
ppp<?php echo ('ala') ?>ooo
Simplement 'pppooo' dans la source, pas visible gérée comme une balise html.
deps fichier s'il est nécessaire
[symfony]
git=http://github.com/symfony/symfony.git
version=v2.0.9
[twig]
git=http://github.com/fabpot/Twig.git
version=v1.5.1
[monolog]
git=http://github.com/Seldaek/monolog.git
version=1.0.2
[doctrine-common]
git=http://github.com/doctrine/common.git
version=2.1.4
[doctrine-dbal]
git=http://github.com/doctrine/dbal.git
version=2.1.5
[doctrine]
git=http://github.com/doctrine/doctrine2.git
version=2.1.5
[swiftmailer]
git=http://github.com/swiftmailer/swiftmailer.git
version=v4.1.5
[assetic]
git=http://github.com/kriswallsmith/assetic.git
version=v1.0.2
[twig-extensions]
git=http://github.com/fabpot/Twig-extensions.git
[metadata]
git=http://github.com/schmittjoh/metadata.git
version=1.0.0
[SensioFrameworkExtraBundle]
git=http://github.com/sensio/SensioFrameworkExtraBundle.git
target=/bundles/Sensio/Bundle/FrameworkExtraBundle
version=origin/2.0
[JMSSecurityExtraBundle]
git=http://github.com/schmittjoh/JMSSecurityExtraBundle.git
target=/bundles/JMS/SecurityExtraBundle
version=origin/1.0.x
[SensioDistributionBundle]
git=http://github.com/sensio/SensioDistributionBundle.git
target=/bundles/Sensio/Bundle/DistributionBundle
version=origin/2.0
[SensioGeneratorBundle]
git=http://github.com/sensio/SensioGeneratorBundle.git
target=/bundles/Sensio/Bundle/GeneratorBundle
version=origin/2.0
[AsseticBundle]
git=http://github.com/symfony/AsseticBundle.git
target=/bundles/Symfony/Bundle/AsseticBundle
version=v1.0.1
OriginalL'auteur tpsa | 2013-01-10
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas mix-and-match des rameaux et de php en une Réponse unique (à faire serait de contourner en partie le point de rameau, qui est de prévenir les graphistes de créer trop de logique dans la vue).
Je pense que la documentation Symfony devrait/pourrait être plus clair sur ce sujet (au moment où il dit en gros "de leur permettre à la fois et faire ce que vous voulez").
Si vous incorporez un autre contrôleur, alors vous devriez être en mesure de servir une Réponse différente et que Réponse peut être basées sur php.
OriginalL'auteur caponica
Avez-vous envisagé le rendu de votre calendrier php template en utilisant
{% render 'ApplicationBundle:Controller:action' %}
et dans l'action le rendu du template php?Vous pouvez également vous rendre à votre calendrier php dans l'action qui rendent calendrier des rameaux et de passer la sortie de la template php comme une simple brindille variable.
Remarque: pour afficher une telle var, n'oubliez pas de faire
{{ var|raw }}
si il n'y a aucune balise html à l'intérieur.Note2: comme de symfony2.2, le rendu paramètre modifié pour
{% render url('route_name') %}
{{ render(controller('ApplicationBundle:Controller:action')) }}
.OriginalL'auteur martinqt
REMARQUE: les extraits ci-dessous sont totalement non-testé.
http://twig.sensiolabs.org/doc/functions/date.html
La fonction
date
semble créer \objet DateTime.Toutefois, si vous voulez joindre l'original des fichiers php (dire "calendar.php') dans twig,
vous devez écrire une extension pour le faire fonctionner.
À faire de travail ci-dessus, vous devez créer "marqué" service de conteneur.
mots que le double a souligné doit être remplacé:
Avec ces, finalement vous pouvez simplement écrire
OriginalL'auteur denkiryokuhatsuden