23

デフォルトでチェックボックスをチェックするだけの簡単な方法は見つかりませんでした。それはそれほど難しいことではありません。

4

13 に答える 13

44

フォーム ビルダーの buildForm メソッドで attr 属性を設定することもできます。

$builder->add('isPublic', CheckboxType::class, array(
    'attr' => array('checked'   => 'checked'),
));
于 2012-06-11T09:25:36.467 に答える
23

Symfony >= 2.3 では、"property_path" が "mapped" になりました。

そう:

$builder->add('checkboxName', 'checkbox', array('mapped' => false,
    'label' => 'customLabel',
    'data' => true, // Default checked
));
于 2013-08-12T12:40:52.827 に答える
20

モデルまたはエンティティの値を true に設定し、それを FormBuilder に渡すだけで、チェックする必要があります。

ドキュメントの最初の例を見た場合:

新しいタスクが作成され、次に setTask が実行され、このタスクが FormBuilder に追加されます。チェックボックスで同じことをすると

$object->setCheckboxValue(true);

チェックボックスがチェックされているはずのオブジェクトを渡します。

期待どおりに動作しない場合は、エラーを再現するサンプル コードを返してください。

于 2012-03-06T12:55:17.450 に答える
15

'data'オプションを設定するとうまくいきます。非エンティティ ベースのフォームを作成しています。

$builder->add('isRated','checkbox', array(
    'data' => true
));
于 2013-02-21T16:04:02.990 に答える
10

小枝で

テンプレートで直接これを行いたい場合:

{{ form_widget(form.fieldName, { 'attr': {'checked': 'checked'} }) }}
于 2013-01-16T05:18:03.907 に答える
5

FormBuilder :: setData () メソッドを使用します。

$builder->add('fieldName', 'checkbox', array('property_path' => false));
$builder->get('fieldName')->setData( true );

"property_path" を false にすると、これは非エンティティ フィールドになります (それ以外の場合は、エンティティ セッターを使用してデフォルト値を true に設定する必要があります)。

チェックボックスはデフォルトでチェックされます。

于 2012-06-19T14:28:39.303 に答える
2

エンティティをフォームに表示する前に、エンティティが格納されている一時オブジェクトを変更する必要があります。次のようなもの:

<?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
            ));
    }
}
于 2014-01-23T17:19:36.003 に答える
1
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);
于 2015-08-08T18:22:55.550 に答える
1

ドキュメントに従って: http://symfony.com/doc/current/reference/forms/types/checkbox.html#value

デフォルトでチェックボックスまたはラジオボタンをオンにするには、 data オプションを使用します。

于 2015-01-24T14:25:00.497 に答える
0

これも同様に機能しますが、永続的な「チェック済み」状態を認識しています

$builder->add('isPublic', 'checkbox', array(
    'empty_data' => 'on',
));
于 2013-12-02T13:58:23.797 に答える