1

Symfony 2.0 と FOSUserBundle 1.2.0 を使用したプロジェクトがあり、すべて正常に動作していました。master ブランチから最新の Symfony 2.1 バージョンと最新の FOSUserBundle にアップグレードしたとき、多くの修正を行った後、ラベル、つまり「form.username」が翻訳されていません。

作成したカスタム バンドルでユーザー バンドルを上書きしました。以下のものを上書きしました。

  • コントローラ

    • ChangePasswordController
    • グループコントローラー
    • 登録コントローラー
    • ユーザーコントローラー
    • タイプ
      • ChangePasswordFormType
      • 登録フォームの種類
  • 資力

    • 構成
      • ルーティング.yml
    • ビュー
      • パスワードを変更する
        • changePassword_content.html.twig
        • changePassword.html.twig
        • form_group.html.twig
        • form_user.html.twig
      • グループ
        • edit.html.twig
        • list.html.twig
        • new.html.twig
        • show.html.twig
      • 登録
        • checkEmail.html.twig
        • email.txt.twig
        • register_content.html.twig
        • register.html.twig
      • ユーザー
        • edit.html.twig
        • index.html.twig
        • show.html.twig

また、カスタム ユーザーとグループ エンティティ、および前のツリーで省略したカスタム UserType と GroupType もあります。

app/Resources/translations/FOSUserBundle.en.yml にある翻訳ファイルも、バンドル src/Acme/UserBundle/Resources/translations/FOSUserBundle.en.yml にコピーしようとしましたが、symfony 2.1 では動作していません。

もちろん、念のため、キャッシュ、本番キャッシュ、および再生成されたアセットを消去し、ブラウザを更新しました...すべてが数回行われましたが、何もありませんでした。

こことGoogleで検索しましたが、手がかりが見つかりません。いくつか試してみましたが、成功しませんでした。

以下のファイルの一部の内容をコピーします。

Acme/UserBundle/Controller/RegistrationController.php

<?php

namespace Acme\UserBundle\Controller;

use Symfony\Component\HttpFoundation\RedirectResponse;

class RegistrationController extends BaseController
{
public function registerAction()
{
    $form = $this->container->get('fos_user.registration.form');
    $formHandler = $this->container->get('fos_user.registration.form.handler');
    $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');

    $process = $formHandler->process($confirmationEnabled);
    if ($process) {
        $user = $form->getData();

        $authUser = false;
        if ($confirmationEnabled) {
            $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
            $route = 'fos_user_registration_check_email';
        } else {
            $authUser = true;
            $route = 'AcmeUserBundle_admin_user_index';
        }

        $this->setFlash('fos_user_success', 'registration.flash.user_created');
        $url = $this->container->get('router')->generate($route);
        $response = new RedirectResponse($url);

        if ($authUser) {
            $this->authenticateUser($user, $response);
        }

        return $response;
    }

    return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
        'form' => $form->createView(),
    ));
}
}

Acme/UserBundle/Form/Type/RegistrationFormType.php

<?php

namespace Acme\UserBundle\Form\Type;

use Doctrine\ORM\EntityManager;

class RegistrationFormType extends BaseType
{
private $entityManager;

public function __construct($class, EntityManager $entityManager)
{
    parent::__construct($class);
    $this->entityManager = $entityManager;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle', 'error_bubbling' => true))
        ->add('nombre', 'text', array('error_bubbling' => true))
        ->add('apellido', 'text', array('error_bubbling' => true))
        ->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle', 'error_bubbling' => true))
        ->add('plainPassword', 'repeated', array(
                'type' => 'password',
                'options' => array('translation_domain' => 'FOSUserBundle'),
                'first_options' => array('label' => 'form.password'),
                'second_options' => array('label' => 'form.password_confirmation'),
                'invalid_message' => 'fos_user.password.mismatch',
                'error_bubbling' => true,
        ))
        ->add('groups', 'entity', array(
                'class' => 'Acme\\UserBundle\\Entity\\Group',
                'property' => 'name',
                'label' => 'Grupos',
                'empty_value' => 'Seleccione Grupos',
                'multiple'  =>  true,
                'expanded'  =>  true,
                'required'  =>  false,
        ));
}

public function getName()
{
    return 'acme_user_registration';
}    
}

Acme/Resources/views/Registration/register_content.html.twig

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
<div class="content no-padding" {{ block('container_attributes') }}>            
    {{ form_widget(form) }}
</div>
<div class="actions">
    <div class="actions-left" style="margin-top: 8px;"></div>
    <div class="actions-right">
        <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
    </div>
</div>    

Acme/Resources/views/Registration/register.html.twig

{% extends "AcmeAdminBundle:Base:base_auth.html.twig" %}
{% form_theme form 'AcmeUserBundle:Form:form_user.html.twig' %}

*[...] Here are stylesheets and JS[...]*

{% block main_content %}
<!-- Start of the main content -->
<div id="main_content">
    <h2 class="grid_12">{% block title "Crear Usuario" %}</h2>
    <div class="clean"></div>
        <div class="grid_6">
            <div class="box">
                <div class="header">
                    <img src="{{ asset('bundles/acmeadmin/img/icons/packs/fugue/16x16/ui-text-field-format.png') }}" alt="" width="16"
                    height="16">
                    <h3>Información Básica</h3>
                    <span></span>
                </div>
                {% block fos_user_content %}
                    {% include "AcmeUserBundle:Registration:register_content.html.twig" %}
                {% endblock fos_user_content %}
            </div> <!-- End of .box -->
        </div> <!-- End of .grid_6 -->
</div> <!-- End of #main_content -->
<div class="push clear"></div>
{% endblock main_content %}

バンドルを無効にすると、削除します

    public function getParent()
{
    return 'FOSUserBundle';
}

ラベルは期待どおりに翻訳されて表示されます。他に何をすべきかわかりません。助言がありますか?

4

0 に答える 0