Symfony2 FOSUserBundle Primordial Formes
Je suis en train de modifier le modèle pour le formulaire d'inscription dans mon application, de sorte que je peux ajouter quelques autres HTML pour elle. Voici la /Ma/UserBundle/Resources/views/Inscription/s'inscrire.html.twig fichier:
{% extends "MyUserBundle::layout.html.twig" %}
{% block fos_user_content %}
<section class="register site-content">
<header>
<h1>{{ 'layout.register'|trans({}, 'FOSUserBundle') }}</h1>
</header>
<div class="block">
{% include "FOSUserBundle:Registration:register_content.html.twig" %}
</div>
</section>
{% endblock fos_user_content %}
Et je l'ai remplacé avec succès la mise en page.html.rameau:
{% extends 'MyMainBundle::layout.html.twig' %}
{% block title %}{{ site_name }}{% endblock %}
{% block content %}
{% for key, message in app.session.getFlashes() %}
<div class="{{ key }}">
{{ message|trans({}, 'FOSUserBundle') }}
</div>
{% endfor %}
{% block fos_user_content %}{% endblock %}
{% endblock %}
ainsi que la forme.html.rameau:
{% extends 'FOSUserBundle::form.html.twig' %}
{% block field_row %}
<li class="form_row">
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</li>
{% endblock field_row %}
{% block form_widget %}
<ul {{ block('container_attributes') }}>
{{ block('field_rows') }}
{{ form_rest(form) }}
</ul>
{% endblock form_widget %}
config parties:
# FOS User Configuration
fos_user:
db_driver: orm
firewall_name: main
user_class: My\UserBundle\Entity\User
from_email:
address: %admin_email%
sender_name: %site_name%
template:
engine: twig
theme: MyUserBundle::form.html.twig
J'ai effacé le cache de mon navigateur.
Chaque fois que je vais à
apache se bloque jusqu'à ce qu'il expire.
Du mieux que je peux comprendre, est le PHP maximum execution message dit qu'il se bloque sur un template twig dans le cache de ligne 16. Cette ligne est function doGetParent(...)
Le fichier est:
<?php
/* FOSUserBundle::form.html.twig */
class __TwigTemplate_9cf68a2af1db50466c556a735bcdeba0 extends Twig_Template
{
public function __construct(Twig_Environment $env)
{
parent::__construct($env);
$this->blocks = array(
'field_row' => array($this, 'block_field_row'),
'form_widget' => array($this, 'block_form_widget'),
);
}
protected function doGetParent(array $context)
{
return "FOSUserBundle::form.html.twig";
}
protected function doDisplay(array $context, array $blocks = array())
{
$this->getParent($context)->display($context, array_merge($this->blocks, $blocks));
}
//line 3
public function block_field_row($context, array $blocks = array())
{
//line 4
echo " <li class=\"form_row\">
";
//line 5
echo $this->env->getExtension('form')->renderLabel($this->getContext($context, "form"));
echo "
";
//line 6
echo $this->env->getExtension('form')->renderErrors($this->getContext($context, "form"));
echo "
";
//line 7
echo $this->env->getExtension('form')->renderWidget($this->getContext($context, "form"));
echo "
</li>
";
}
//line 11
public function block_form_widget($context, array $blocks = array())
{
//line 12
echo " <ul ";
$this->displayBlock("container_attributes", $context, $blocks);
echo ">
";
//line 13
$this->displayBlock("field_rows", $context, $blocks);
echo "
";
//line 14
echo $this->env->getExtension('form')->renderRest($this->getContext($context, "form"));
echo "
</ul>
";
}
public function getTemplateName()
{
return "FOSUserBundle::form.html.twig";
}
public function isTraitable()
{
return false;
}
}
Il a aussi expiré sur \vendor\twig\lib\Twig\Template.php on line 65
Qui est public function getParent(array $context)
Donc clairement il y a un problème avec getParent mais je ne sais pas ce que cela signifie ou comment résoudre le problème.
OriginalL'auteur Matt | 2012-02-10
Vous devez vous connecter pour publier un commentaire.
Selon le FOSUserBundle documentation:
Dans mon projet, je remplace le FOSUserBundle de mise en page comme ils l'ont dit et c'est un travail comme un charme.
Afin de le faire de la même manière, vous aurez besoin pour créer
app/Resources/FOSUserBundle/views/Registration/register.html.twig
. (ou la forme que vous souhaitez remplacer)MODIFIER
Ok, je viens de réaliser que vous avez choisi d'étendre le FOSUserBundle. Dans ce cas, au lieu de
app/Resources/
vous avez besoin de le faire à l'intérieur de votre bundle. Mais vous n'avez pas besoin de mettreLe FOSUserBundle détecte que vous écrasez le bundle et sera prolongé automatiquement.
Et vous devez également indiquer votre bundle FOSUserBundle est son parent.
J'ai ajouté une chose de plus, que j'ai oublier de le mentionner.
Aussi, n'oubliez pas de vider votre cache après l'édition des templates, il pourrait être possible que ce soit la raison de vos modifications ne sont pas visibles. (à l'aide de
php app/console cache:clear
)Cache-compensation est probablement résoudre >80% des propos de Symfony erreurs. Tout comme le redémarrage résout >98,5% de tous les problèmes de l'ordinateur en général.
OriginalL'auteur Axxiss
Copier le fichier:
à l':
app/Resources/FOSUserBundle/views/
catalogue. Ensuite, il remplace la base de FOS forme. Vous pouvez modifier le fichier copié.Sinon, vous devez remplacer le FOS RegisterController.
OriginalL'auteur Max Małecki
Je me sens stupide, juste enlevé le
{% extends ... %}
ligne dans la forme.html.brindille et cela a fonctionné. Je suppose que je ne comprends pas suffisamment sur ce qui est héritée dans les bundles. (Je ne veux hériter de la FOSUserBundle forme.html.twig, mais je ne sais pas comment accéder qu'à partir d'un ensemble qui hérite de FOSUserBundle)OriginalL'auteur Matt