0

symfony のフォームに問題があります。

最初のコード:

$test = array();
    foreach($docGrp as $dc){
        $test[] = $dc->getGruppenName();
    }
    $form = $this->createFormbuilder($document)
        ->add('gruppe', 'choice', array(
        'choices'   =>array(
            'Gruppen'   =>  $test,
        ),
        'multiple'  =>  true,
        'expanded'  => true,
    ))
        ->getForm();

配列をチェックボックスとして表示し、その値を配列内の値にする必要があります。ただし、次のような例外が発生します

「テンプレートのレンダリング中に例外がスローされました (「警告: strtr() は、パラメーター 1 が文字列で、配列が指定されていることを期待しています」

したがって、選択肢を "Gruppen => "test" に変更すると機能します。しかし、目的に反するため、配列からそれらの値を取得する必要があります。

誰かが私が何を意味するかを知っていれば、助けはクールでしょう:)

これまでアディ

4

2 に答える 2

3

問題は、フォームで選択肢を渡す方法です。$test は配列であるため、実際には Choices オプションとして 2 次元配列を渡しています。たとえば、array('Gruppen' => array(....)) は許可されていません。

Symfony で複数選択ウィジェットを使用すると、2 次元配列が機能するのを見てきました。ディメンションが大きくなるにつれて、ウィジェットが選択肢をインデントする場所。ただし、チェックボックスでは機能しません。あなたがしたいことは、次のような配列を渡すことです:

$countries = array(
    'au' => 'Australia',
    'at' => 'Austria',
    'az' => 'Azerbaijan',
    ...
);

配列キーは値です。

$form = $this->createFormbuilder($document)
    ->add('country_code', 'choice', array(
        'choices'   => $countries
        'multiple'  =>  true,
        'expanded'  => true,
    )
);
于 2012-06-06T12:06:30.060 に答える
3

このコードを試してください:

foreach($docGrp as $dc)
{
    $test[] = array($dc->getGruppenID()=>$dc->getGruppenName());
}

$form = $this->createFormbuilder($document)
    ->add('gruppe', 'choice', 
      array('choices' =>$test
    ),
    'multiple'  =>  true,
    'expanded'  => true,

))
    ->getForm();
于 2012-09-20T13:37:28.857 に答える