デフォルトでチェックボックスをチェックするだけの簡単な方法は見つかりませんでした。それはそれほど難しいことではありません。
13 に答える
フォーム ビルダーの buildForm メソッドで attr 属性を設定することもできます。
$builder->add('isPublic', CheckboxType::class, array(
'attr' => array('checked' => 'checked'),
));
Symfony >= 2.3 では、"property_path" が "mapped" になりました。
そう:
$builder->add('checkboxName', 'checkbox', array('mapped' => false,
'label' => 'customLabel',
'data' => true, // Default checked
));
モデルまたはエンティティの値を true に設定し、それを FormBuilder に渡すだけで、チェックする必要があります。
ドキュメントの最初の例を見た場合:
新しいタスクが作成され、次に setTask が実行され、このタスクが FormBuilder に追加されます。チェックボックスで同じことをすると
$object->setCheckboxValue(true);
チェックボックスがチェックされているはずのオブジェクトを渡します。
期待どおりに動作しない場合は、エラーを再現するサンプル コードを返してください。
'data'オプションを設定するとうまくいきます。非エンティティ ベースのフォームを作成しています。
$builder->add('isRated','checkbox', array(
'data' => true
));
小枝で
テンプレートで直接これを行いたい場合:
{{ form_widget(form.fieldName, { 'attr': {'checked': 'checked'} }) }}
FormBuilder :: setData () メソッドを使用します。
$builder->add('fieldName', 'checkbox', array('property_path' => false));
$builder->get('fieldName')->setData( true );
"property_path" を false にすると、これは非エンティティ フィールドになります (それ以外の場合は、エンティティ セッターを使用してデフォルト値を true に設定する必要があります)。
チェックボックスはデフォルトでチェックされます。
エンティティをフォームに表示する前に、エンティティが格納されている一時オブジェクトを変更する必要があります。次のようなもの:
<?php
namespace KPI\AnnouncementsBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class AnnouncementType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ...
if ($options['data']->getDisplayed() === null) {
$options['data']->setDisplayed(true);
}
// ...
$builder
->add('displayed', 'checkbox', array(
'required' => false
));
}
}
UserBundle\Entity\User
( User ) という名前のエンティティがあり、 isActive という名前のメンバーがあるとします。 isActive を true に設定することで、デフォルトでチェックボックスがオンになるように設定できます。
$user = new User();
// This will set the checkbox to be checked by default
$user->setIsActive(true);
// Create the user data entry form
$form = $this->createForm(new UserType(), $user);
ドキュメントに従って: http://symfony.com/doc/current/reference/forms/types/checkbox.html#value
デフォルトでチェックボックスまたはラジオボタンをオンにするには、 data オプションを使用します。
これも同様に機能しますが、永続的な「チェック済み」状態を認識しています
$builder->add('isPublic', 'checkbox', array(
'empty_data' => 'on',
));