2017-04-03 1 views
0

私は誰かが正しい方向に私を向けることを望んでいます。私はこの問題について助けが必要です。私はSymfony 3+と互換性があり、元々2.7になっています。Symfony 3:Form Builderで廃止されたArrayKeyChoiceList


のSymfony \コンポーネント\フォーム\ ChoiceList \ ArrayKeyChoiceListクラスは、バージョン2.8以降廃止され、3.0で削除されます。使用のSymfony \コンポーネント\フォーム\ ChoiceList \ ArrayChoiceListは、代わりに以下


は基本的に私は、アレイ内の簡単なキーと値のペアを組み立てると、選択肢にそれを渡している、私が使用しているコードです。私はさまざまなテクニックを試してみましたが、さまざまな例を見て、この廃止された警告を取り除くことはできません。どんな助けもありがとう!

// SRC /フォーム/タイプ/ LinkType.php

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder 
      ->add('id', TextType::class, array('label' => 'ID for Link', 'required' => false)) 
      ->add('artistid', HiddenType::class, array('label' => 'Artist ID')) 
      ->add('linktypeid', ChoiceType::class, 
       array('choices' => $this->fillLinkTypes(), 
        'choice_translation_domain' => false, 
        'label' => 'Link Type')) 
      ->add('url', TextType::class, array('label' => 'URL')) 
      ->add('Submit', SubmitType::class, array('attr' => array('class' => 'btn btn-primary'))) 
     ; 
    } 

    private function fillLinkTypes() { 
     $er = $this->em->getRepository('testArtistBundle:LinkTypes'); 

     $results = $er->createQueryBuilder('e') 
      ->orderBy('e.name', 'ASC') 
      ->getQuery() 
      ->getResult(); 

    $linkTypes = array(); 
    foreach($results as $lt){ 
     $linkTypes[$lt->getId()]=$lt->getName(); 
    } 
    return $linkTypes; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'test\ArtistBundle\Entity\ArtistsLinks', 
    )); 
    } 
+0

この行は '' choices '=> $ this-> fillLinkTypes() 'というエラーの原因ですか?あなたはそれが事実であるかどうか確認してもらえますか? –

+0

@AlvinBunkこれは実際問題の原因となっている行です。私がそれをコメントアウトすると、警告は消えます。私はまた、この配列( '1' => 'Test'、 '2' => 'Another Test)のようなものを、運がないメソッドの代わりにハードコーディングしました。 – blamonet

+0

質問:prod環境を使用している場合は、変更するたびに 'php bin/console cache:clear --env = prod'でキャッシュをクリアしていますか? –

答えて

1

@Ceradは、キー/値の交換に関する正しいです。

foreach($results as $lt){] 
    $linkTypes["'" . $lt->getName() . "'"] = "'" . $lt->getId() . "'"; 
} 

それぞれの値/キー周りの単一引用符が( ')があるように:私はまた、あなたがあなたのfillLinkTypes機能でこれを行う必要があるかもしれないと思います。あなたはそれを試して、それが動作するかどうか見ることができますか?私は確信していないが、それを試してみてください。

+0

それはそれでした! Alvinと@Ceradに感謝します。 – blamonet

+0

あなたは大歓迎です!あなたがうまく働いてうれしい。 –

関連する問題