-1

はい、私はこれが以前に尋ねられ、落胆したことを知っていますが、私はそのための良いユースケースを持っています。私は、ビュー指向の補足アプローチを学ぶことに興味があります。Symfony:エンティティ__toStringで翻訳コンポーネントを使用するには?

ユースケース:

私は実体を持っているが、私はEasyAdminでコレクションとして使用Venue (id, name, capacity)を言います。選択肢をレンダリングするには、このエンティティに文字列表現が必要です。

ディスプレイを%name% (%capacity% places)としたい。

あなたが正しく推測したように、私は単語 "places"を翻訳する必要があります。

私はどちらかを実装する方法は考えているが、私は同意する適切__toString()出力

をレンダリングすることにより、エンティティの__toString()方法フォームビューで

  • に直接それを

    1. をしたいことができ最初のアプローチがMVCパターンに違反していることを示します。

      お知らせください。

  • 答えて

    1

    %name% (%capacity% places)と表示することは、フォームビューでは「可能」な表現に過ぎないので、この非常に具体的な表現をフォームタイプに変更します。また、(choice_labelを使用してフォームタイプ次に

    my_translation: %name% (%capacity% places) 
    

    class Venue 
    { 
        private $name; 
    
        ... setter & getter method 
    
        public function __toString() 
        { 
         return $this->getName(); 
        } 
    } 
    

    がmessages.en.yml:あなたの会場エンティティの__toString()方法に属することができますどのような

    知る価値がある:choice_translation_domain):

    use Symfony\Component\Translation\TranslatorInterface; 
    
    class YourFormType extends AbstractType 
    { 
        private $translator; 
    
        public function __construct(TranslatorInterface $translator) 
        { 
         $this->translator = $translator; 
        } 
    
        /** 
        * @param FormBuilderInterface $builder 
        * @param array $options 
        */ 
        public function buildForm(FormBuilderInterface $builder, array $options) 
        { 
         $builder 
          ->add(
           'venue', 
           EntityType::class, 
           array(
            'choice_label' => function (Venue $venue, $key, $index) { 
             // Translatable choice labels 
             return $this->translator->trans('my_translation', array(
              '%name%' => $venue->getName(), 
              '%capacity%' => $venue->getCapacity(), 
             )); 
            } 
           ) 
          ); 
        } 
    
    } 
    

    &もservices.ymlにサービスとしてフォームタイプを登録します。

    your_form_type: 
        class: Your\Bundle\Namespace\Form\YourFormType 
        arguments: ["@translator"] 
        tags: 
        - { name: form.type } 
    
    +0

    そして、これはどのようにEasyAdminに入りますか? – rishta

    関連する問題