Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在symfony2中以嵌入形式显示输入_Php_Forms_Symfony - Fatal编程技术网

Php 在symfony2中以嵌入形式显示输入

Php 在symfony2中以嵌入形式显示输入,php,forms,symfony,Php,Forms,Symfony,我正在尝试在symfony2中创建一个嵌入表单,该表单将包含一个联系人表单,该表单将嵌入一个ContactPhonenumber表单以添加电话号码 我已经按照Symfony2文档中关于嵌入表单的说明进行了操作,但是我找不到一种方法来显示至少一个电话号码的输入字段。如果我这样做没有错误,我只会得到一个标签的嵌入式电话号码形式。 如何在那里显示输入? 我的代码是: 我的两个实体表单类: class ContactType extends AbstractType { /** * @

我正在尝试在symfony2中创建一个嵌入表单,该表单将包含一个联系人表单,该表单将嵌入一个ContactPhonenumber表单以添加电话号码

我已经按照Symfony2文档中关于嵌入表单的说明进行了操作,但是我找不到一种方法来显示至少一个电话号码的输入字段。如果我这样做没有错误,我只会得到一个标签的嵌入式电话号码形式。 如何在那里显示输入? 我的代码是:

我的两个实体表单类:

class ContactType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder                        
            ->add('contactType')

            ->add('title')

            ->add('name')

            ->add('givenName')

            ->add('middleName')

            /*->add(
                'contactPhonenumbers', 
                'collection', 
                array( 'type' => new ContactPhonenumberType($options) ) 
                )
          */        

            ->add('contactPhonenumbers', new ContactPhonenumberType($options) )
        ;
    }

//.......
//More functions
//.......
}

class ContactPhonenumberType extends AbstractType
{

    public function __construct(array $options=null) {
        $this->options = $options;
    }

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {    
        $builder                                    
            ->add('position')

            ->add('number')

            ->add( 
                $builder->create(
                    'contact', 
                    'searchable',
                    array( 
                        'data_class'    => '....Bundle\Entity\Contact',
                        'class'         => '....Bundle:Contact',
                        'dataroute'     => '...._contact_searchable',
                        'classlistview' => new ....Bundle\Component\Listview\ContactList
                    )
                )->addViewTransformer( 
                    new NameToIdTransformer( 
                        $options[ 'em' ], 
                        $options[ 'request' ],
                        $this, 
                        array(),
                        '....Bundle:Contact'
                    ) 
                )
            )

            ->add( 
                $builder->create(
                    'phonenumberType', 
                    'searchable',
                    array( 
                        'data_class'    => '....Bundle\Entity\PhonenumberType',
                        'class'         => '.....Bundle:PhonenumberType',
                        'dataroute'     => '...._phonenumbertype_searchable',
                        'classlistview' => new ....\Component\Listview\PhonenumberTypeList
                    )
                )->addViewTransformer( 
                    new NameToIdTransformer( 
                        $options[ 'em' ], 
                        $options[ 'request' ],
                        $this, 
                        array(),
                        '...Bundle:PhonenumberType'
                    ) 
                )
            )
        ;
    }
  }
以及我在控制器上的功能

    public function newAction( Request $request )
    {
        $em = $this->getDoctrine()->getManager();
        $entity = new Contact();


//        $number = new ArrayCollection();
//        $number[] = new ContactPhonenumber();
//        $entity->setContactPhonenumbers( $number );

        $form   = $this->createCreateForm( $entity );

        return $this->render(
            '...Bundle:Contact:new.html.twig',
            array(
                'entity' => $entity,
                'form'   => $form->createView()
            )  
        );
    }
以细枝为单位的表格:

<div class="widget-body">                               
{{ form_start( form, { 'attr': { 'class': 'form-horizontal', 'role': 'form', 'novalidate': 'novalidate' } } ) }}
{{ form_errors( form ) }}                                                                                                                        
{{ form_row( form.contactType ) }}

{{ form_row( form.title ) }}

{{ form_row( form.name ) }}

{{ form_row( form.givenName ) }}

{{ form_row( form.middleName ) }}

------>
{{ form_row(form.contactPhonenumbers) }}
<--------
{{ form_row( form.salutation ) }}

{{ form_row( form.address ) }}

{{ form_row( form.superiorContact ) }}
<div class="form-group">
    <hr>
</div>
<div class="form-group">
    <div class="col-sm-2"></div>
    <div class="col-sm-10">
        {{ form_widget( form.submit ) }}
        {{ form_widget( form.cancel ) }}
    </div>
</div>
{{ form_row( form._token ) }}
{{ form_end( form, { 'render_rest': false } ) }}

请显示您当前的代码。我猜默认情况下您的联系人实体没有任何联系人号码?因此,您不会在表单上看到任何内容。至少添加一个以开始。您将需要使用集合表单类型。尝试在文档中实现该示例,然后更改为您的实体。