2014-01-12 2 views
0

Мой проект должен быть многоязычным, я далек от завершения, но до сих пор все мои шаблоны с ветками используют фильтр trans.При создании формы, где лучше всего устанавливать значения меток?

Теперь, когда вы строите формы, я хочу, чтобы мои ярлыки также были переведены, пока что это один из нескольких классов формообразователей, вопрос в том, должен ли я устанавливать значения для меток здесь или внутри шаблонов ветви, чтобы я мог снова использовать фильтр twig 'trans'?

<?php 

namespace MG\AdminBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class CustomersHomesType extends AbstractType 
{ 

    private $customersId = null; 

    public function __construct($customersId){ 
     $this->customersId = $customersId; 
; 
    } 
     /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('customers_id', 'hidden', array('data'=>$this->customersId,'required'=>true)) 
      ->add('name', 'text', array('label'=>'Name:','required'=>true)) 
      ->add('streetAddress1', 'text', array('label'=>'Street Address:','required'=>true)) 
      ->add('streetAddress2', 'text', array('label'=>'Street Address:','required'=>false)) 
      ->add('city', 'text', array('label'=>'City:','required'=>true)) 
      ->add('state', 'text', array('label'=>'State:','required'=>true)) 
      ->add('zipcode', 'text', array('label'=>'Zip Code:','required'=>true)) 
      ->add('type', 'choice', array(
        'expanded'=>false, 
        'label'=>'Address Type:', 
        'choices' => array('billing' => 'Billing Address ', 'work' => 'Work Address ', 'shipping'=>'Shipping Address '), 
        'required' => true, 
      )) 
      ->add('subdivision', 'text', array('label'=>'Subdivision:','required'=>false)) 
      ->add('directions', 'textarea', array('label'=>'Directions Or Comments:','required'=>false)) 

      ->add('phone', 'text', array('label'=>'Phone #1:','required'=>false)) 
      ->add('phone2', 'text', array('label'=>'Phone #2:','required'=>false)) 
      ->add('save', 'submit', array('label'=>'Save')) 
     ; 
    } 

    /** 
    * @param OptionsResolverInterface $resolver 
    */ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'MG\AdminBundle\Entity\CustomersHomes' 
     )); 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return 'mg_adminbundle_customershomes'; 
    } 
} 

ответ

2

Длинный день отвечать на ваши вопросы ....

Лучшее место, чтобы добавить метки в в форме, но с помощью перевода.

В вашей форме ..

->add('blah', 'text', array(
    ... etc ... 
    'label' => 'vendor.bundle.field.label', 
    // For bundle named Vendor\Bundle 
) 

Тогда в ваших переводов файлов (расположенных в `Ресурсы/переводы/сообщений. [Языковой стандарт]. [Filetype] (см http://symfony.com/doc/current/book/translation.html) (это в формате YAML)

vendor: 
    bundle: 
     field: 
      label: the label that you wanted to show 
     field2: 
      biscuits: you can call it what ever you want 

Таким образом, вы можете сделать кучу переводы файлов, а затем сделать сайт многоязычным (при условии, что файлы есть, он падает обратно к установленному локал или резервное иначе), вместо того, чтобы закопать позже дату редактирования фактического текста. Также есть только одна папка (или группа с папкой Resources/translations, которую необходимо обновить позже, а не редактировать данные фактического класса.

Эта же система также работает для любых валидаций, но эти переводы должны быть местами в Resources/translations/validators.[locale].[filetype]. Все еще очень удобно.

Если они не отображаются сразу же, попробуйте очистить кеш.

+0

Я очень благодарен за ваше время, я нахожу, что задавая вопросы, я быстрее научусь, также я хорошо знаю, чтобы вернуться сюда в stackoverflow. Еще раз спасибо вам большое. – MikeGA

+1

Не проблема, рада помочь. Как я уже упоминал в другом ответе .. Хорошее место для поиска хорошего использования того, что может предложить Symfony, это Sylius Bundle (https://github.com/Sylius/Sylius), а также FOSUserBundle (https: // github.com/FriendsOfSymfony/FOSUserBundle). Набор Symfony CMF также может стать отличным источником, но насколько я знаю, он использует PHPCR, в который я не вложил ни одного времени, поэтому я довольно сильно ушел от него, что я не могу подтвердить, что он учит добродетелям. – qooplmao

Смежные вопросы