dongwu3596 2016-05-07 13:53
浏览 46

Symfony 3合并表单 - 集合打印错误(仅打印标签)

I'm using symfony 3.0.5. I have form with field of type "collection". And when i'm printing collection form I only get label.

enter image description here

My code: UserType.php

class UserType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('firstname')
        ->add('lastname')
        ->add('username')
        ->add('password')
        ->add('address')
    ;
}

/**
 * @param OptionsResolver $resolver
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\User'
    ));
}
}

ClientType.php

class ClientType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('money')
        ->add('user',CollectionType::class,array(
            'entry_type' => UserType::class
        ))
    ;
}

/**
 * @param OptionsResolver $resolver
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\Client'
    ));
}

Client.php

class Client
{
/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="client")
 * @ORM\JoinColumn(name="id", referencedColumnName="id", onDelete="CASCADE")
 */
private $user;
...//set,get:money,id,...
}

User.php

class User
{
/**
 * @ORM\OneToMany(targetEntity="Client", mappedBy="user")
 */
private $client;

public function __construct()
{
    $this->client = new ArrayCollection();
}
....//set get: name,id,lastname...
}

ClientController.php

public function createAction(Request $request)
{
    $client = new Client();
    $user = new User();

    $form = $this->createForm(ClientType::class,$client)
            ->add('submit',ButtonType::class);
....
}

create.html.twig

{% extends 'base.html.twig' %}

{% block body %}
    <h2 class="page-header">Client</h2>
    {{ form_start(form) }}
    {{ form_widget(form) }}
    {{ form_end(form) }}
{% endblock %}
  • 写回答

1条回答 默认 最新

  • dongtiao2066 2016-05-07 15:16
    关注

    You can try this :

    {{ form_start(form) }}
    {{ form_row(form.money) }}
    {{ form_row(form.user.firstname) }}
    {{ form_row(form.user.lastname) }}
    {{ form_end(form) }}
    

    [Edit]

    As you use collectionType (Is a mistake?), you need to loop on user, try :

    {{ form_start(form) }}
    {{ form_row(form.money) }}
    {% for user in form.user %}
        {{ form_row(user.firstname) }}
        {{ form_row(user.lastname) }}
    {% endfor %}
    {{ form_end(form) }}
    

    But I think your entity are misconfigured, maybe take look on this :

    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    // ...
    
    $builder->add('user', EntityType::class, array(
        'class' => 'AppBundle:User',
    ));
    
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致
  • ¥15 禅道二次开发编辑版本,上传不了发行包