以奏鸣曲的形式创建虚拟字段

时间:2017-12-19 01:27:55

标签: symfony sonata-admin symfony-3.3

遵循此文档

https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_virtual_field.html

我尝试这样做

<?php 
protected function configureFormFields(FormMapper $formMapper)
{

    $formMapper
        .....
    ->add('tancar', 'checkbox',array(
        'virtual_field' => true
        ))

出现此错误

  

选项&#34; virtual_field&#34;不存在。定义的选项包括:&#34;操作&#34;,&#34; allow_extra_fields&#34;,&#34; attr&#34;,&#34; auto_initialize&#34;,&#34; block_name&#34;,& #34; by_reference&#34;,&#34;复合&#34;,&#34;约束&#34;,&#34; csrf_field_name&#34;,&#34; csrf_message&#34;,&#34; csrf_protection&# 34;,&#34; csrf_token_id&#34;,&#34; csrf_token_manager&#34;,&#34;数据&#34;,&#34; data_class&#34;,&#34;禁用&#34;,&# 34; empty_data&#34;,&#34; error_bubbling&#34;,&#34; error_mapping&#34;,&#34; extra_fields_message&#34;,&#34; horizo​​ntal_input_wrapper_class&#34;,&#34; horizo​​ntal_label_class&#34 ;,&#34; horizo​​ntal_label_offset_class&#34;,&#34; inherit_data&#34;,&#34; invalid_message&#34;,&#34; invalid_message_parameters&#34;,&#34; label&#34;,&#34 ; label_attr&#34;,&#34; label_format&#34;,&#34; label_render&#34;,&#34;映射&#34;,&#34;方法&#34;,&#34; post_max_size_message&#34; ,&#34; property_path&#34;,&#34; required&#34;,&#34; sonata_admin&#34;,&#34; sonata_field_description&#34;,&#34; sonata_help&#34;,&#34; translat ion_domain&#34;,&#34; trim&#34;,&#34; upload_max_size_message&#34;,&#34; validation_groups&#34;,&#34; value&#34;。

出了什么问题?

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

->add('_action', null, [
                'virtual_field' => true,
                'actions' => [
                    'edit' => [],
                    'delete' => [],
                ],
            ]);

因为virtual_field适用于_actionbatch。在Documention&#34;包括各种Mappers中的某些字段不依赖于模型中的任何实际字段(例如,_action或batch)。&#34;

答案 1 :(得分:0)

因为看起来这个选项在listMapper中使用,我已经解决了在实体中创建这个方法的问题:

<?php
public function getTancar()
{
    return false;
}

public function setTancar($value)
{

}

然后,我可以在控制器或Admin类中获取此参数(例如,postUpdate方法)