【问题标题】:Symfony forms - mapping of checkboxSymfony 表单 - 复选框的映射
【发布时间】:2018-01-15 15:09:55
【问题描述】:

我可以指定表单字段如何映射到数据类吗?

假设我有一个带有复选框的表单,并且在我的数据实体上,该字段存储为字符串。

class FormType extends AbstractType {

    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults([
            'data_class' => DataEntity::class,
        ]);
    }

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('issueType', CheckboxType::class, [
            'label' => 'issueType',
        ]);
    }

}

class DataEntity {

    /** @var string Either PLASTIC or PAPER */
    private $issueType;

    public function getIssueType() {
        return $this->issueType;
    }
    public function setIssueType($issueType) {
        $this->issueType = $issueType;
    }

}

如果为真,我可以将复选框映射为“塑料”,如果为假,则可以映射为“纸”?

【问题讨论】:

    标签: php symfony symfony-forms


    【解决方案1】:

    您可以使用数据转换器将布尔值转换为字符串。请参阅本教程:https://symfony.com/doc/current/form/data_transformers.html

    $builder->get('issueType')
        ->addModelTransformer(new CallbackTransformer(
            function ($type) {
                // your logic here
                return $type;
            },
            function ($type) {
                // your logic here
                return $type;
            }
        ));
    

    【讨论】:

      【解决方案2】:

      试试:

      $builder->add('newsletter', 'choice', array(
          'label' => 'Newsletter erhalten',
          'attr' => array(
              'class' => 'form-control',
          ),
          'choices' => array(array('yes' => 'plastic'), array('no' => 'paper')),
          'expanded' => true,
          'multiple' => true,
          'required' => false,
      ));
      

      也可以在这里查看答案Symfony2 Change checkbox values from 0/1 to 'no'/'yes'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-02
        • 2019-08-03
        • 1970-01-01
        • 2013-06-14
        • 2014-03-22
        • 1970-01-01
        相关资源
        最近更新 更多