3

ユーザーにアンケートの種類を選択してもらいたいので、アンケートの種類を含む select を設定します。

型はエンティティからロードされますQuestionType

 $builder
        ->add('questionType', 'entity', array(
              'class'    => 'QuizmooQuestionnaireBundle:QuestionType',
              'property' => 'questionTypeName',
              'multiple' => false,
              'label' => 'Question Type'))
        ->add('type', 'hidden')
    ;

達成できないのは、結果の選択にデフォルト値を設定することです。

私はたくさんグーグルで検索しましたが、配列でのみ機能するpreferred_choiceソリューションしか得られませんでした

4

5 に答える 5

4

コントローラーの newAction にタイプを設定して作成しました。設定したタイプをデフォルト値として取得します。

public function newAction($id)
{
    $entity = new RankingQuestion();

    //getting values form database 
    $em = $this->getDoctrine()->getManager();
    $type =  $em->getRepository('QuizmooQuestionnaireBundle:QuestionType')->findBy(array('name'=>'Ranking Question'));
    $entity->setQuestionType($type); // <- default value is set here 

    // Now in this form the default value for the select input will be 'Ranking Question'
    $form   = $this->createForm(new RankingQuestionType(), $entity);

    return $this->render('QuizmooQuestionnaireBundle:RankingQuestion:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
        'id_questionnaire' =>$id
    ));
}

data一定のデフォルト値 ( http://symfony.com/doc/current/reference/forms/types/form.html ) がある場合は属性を使用できますが、エンティティを編集するためにフォームを使用している場合は役に立ちません (新しいものを作成しないでください)

于 2013-04-03T15:28:57.387 に答える
2

エンティティの結果を使用して選択メニューを作成する場合は、preferred_choicesを使用できます。

推奨される選択肢は、ドキュメントに記載されているようにリストの一番上に表示されるため、空の値を追加しない限り、技術的には最初の選択肢がデフォルトになります。

于 2013-04-03T08:40:58.927 に答える
1

事前にモデルに設定するという受け入れられた答えは良いものです。ただし、collection型の各オブジェクトの特定のフィールドにデフォルト値が必要な状況がありました。コレクションにはallow_addallow_removeオプションが有効になっているため、クライアントが要求するオブジェクトの数がわからないため、コレクション内の値を事前にインスタンス化することはできません。したがってempty_data、次のように、目的のデフォルト オブジェクトの主キーでオプションを使用しました。

class MyChildType
extends AbstractType 
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('optionalField', 'entity', array(
            'class' => 'MyBundle:MyEntity',
            // Symfony appears to convert this ID into the entity correctly!
            'empty_data' => MyEntity::DEFAULT_ID,
            'required' => false,
        ));
    }
}

class MyParentType
extends AbstractType 
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('children', 'collection', array(
            'type' => new MyChildType(),
            'allow_add' => true
            'allow_delete' => true,
            'prototype' => true,  // client can add as many as it wants
        ));
    }
}
于 2014-11-17T23:41:17.427 に答える