どうすればいいですか事前選択entity
フィールドタイプを使用していますか?Symfony2 - エンティティのフィールドタイプのデフォルトの選択肢を設定するには?
ほとんどのユーザーが同じ国に住んでいるため、データベースから取得した国の1つを事前に選択したいと考えています。
data
オプションを過去に追加して、checkbox
フィールドの値を事前に選択することができました。
このLocationTypeフォームは、フォームが複数のエンティティから構築されているため、UserTypeフォームに含まれています。
LocationType形式:
namespace Cmp\MyBundle\Form\Type;
use Cmp\MyBundle\Entity\Account;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\EntityRepository;
class LocationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('company')
->add('street')
->add('streetno')
->add('streetsuffix')
->add('zipcode')
->add('city')
->add('province')
->add('country', 'entity', array(
'class' => 'CmpMyBundle:Country',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('c.nameEn', 'ASC');
},
'choice_label' => 'nameEn',
))
->add('tel')
->add('fax')
->add('url')
->add('account', new AccountType());
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Cmp\MyBundle\Entity\Location',
));
}
public function getName()
{
return 'location';
}
}
草のcoutryリストdorpdownに生成小枝。フォームを生成
<div class="form-group {% if not form.location.country.vars.valid %}has-error{% endif %}">
{{ form_label(form.location.country, 'country'|trans, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
<div class="col-sm-9">
{{ form_errors(form.location.country) }}
{{ form_widget(form.location.country, {'attr': {'class': 'form-control', 'placeholder': 'country'|trans}}) }}
</div>
</div>
コントローラー:
ユーザ型形態は、上に示した場所フォームタイプを含みます。
私の場合私のフォームは2つのエンティティの組み合わせであるため、これは機能しません。これらのエンティティはManyToOneリンクにリンクされています。したがって、新しいフォームはユーザーから始まり、そのアカウントを含みます。したがって、私が設定したいデフォルト値は、新しいフォームが始まるものと同じ他のエンティティ(アカウント)にあります。 – Tom