SymfonyとDoctrineの記事になります。
私の環境の各バージョンは次の通りです。
Symfony 3.4
Doctrine 2.12
EntityからCheckboxを作成したときに、defaultの状態を選択された状態にしたいときの方法です。
EntityTypeだけでなく、他にもdefaultの値を設定したい場合に有効です。
EntityTypeからCheckboxを作成する
参考 : EntityType Field
今回はCheckboxですが、もちろんRadioやSelectも作成可能です。
Checkboxの場合は下記のようになります。
(FORM自体の詳細な作成方法は省略しています。Field情報の作成の仕方になります。)
(classのEntityの取得部分は開発環境に合わせて記述してください。)
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
// ...
$builder->add('shop', EntityType::class, [
'class' => 'AppBundle:Shop',
'choice_label' => 'name',
'expanded' => true,
'multiple' => true,
]);
ちなみに、expanded、multipleを変更することで、Selectやradioを作ることが可能です。
| Element Type | Expanded | Multiple |
|---|---|---|
| select tag | false | false |
| select tag (with multiple attribute) | false | true |
| radio buttons | true | false |
| checkboxes | true | true |
EntityTypeからCheckboxをチェックされた状態にする方法
ページを開いた時の初期値(default)をチェックされた状態にします。
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
// ...
$builder->add('shop', EntityType::class, [
'class' => 'AppBundle:Shop',
'choice_label' => 'name',
'expanded' => true,
'multiple' => true,
'data' => $this->shopRepository->findAll(),
]);
dataを使用することで初期値(default)を設定することができます。
今回は「shop」のチェックボックスをすべて選択するために、shopRepositoryから全体を取得しています。
(リポジトリの取得部分は開発環境に合わせて記述してください。)
ちなみに、IDの1と5のショップだけチェックしたい場合は次のように記述します。
$this->shopRepository->findBy(['id' => [1,5]]),
まとめ
EntityTypeを使用したチェックボックスの作成について簡単に解説してみました。
より詳細な使い方は下記をご覧ください。
参考 : EntityType Field
Symfonyおすすめ書籍
あまり種類がないのと、そもそもフレームワークとして情報が膨大なので、入門でも結構読み応えがあります。
「PHPフレームワーク Symfony 4入門」