表单提交问题

时间:2014-07-04 10:29:24

标签: symfony symfony-2.5

我想创建新用户并从组合框中给他一个角色但是它在这里工作是我到目前为止所做的:

角色表格

class RoleType extends AbstractType
{
        /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('role','entity',array(
                    'class' => 'vendor\Bundle\Entity\Role',
                    'property'=>'role'
                ))
        ;
    }

USER FORM

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

但我无法将用户保存到数据库中我收到此错误

执行' UPDATE Roles SET role =?时发生异常? WHERE role_id =?'与params [{},1]:

CONTROLLER

  private function createEditForm(User $entity)
    {
        $form = $this->createForm(new UserType(), $entity, array(
            'action' => $this->generateUrl('user_update', array('id' => $entity->getId())),
            'method' => 'PUT',
        ));

        $form->add('submit', 'submit', array('label' => 'Update'));

        return $form;
    }
    /**
     * Edits an existing User entity.
     *
     */
    public function updateAction(Request $request, $id)
    {
        $em = $this->getDoctrine()->getManager();

        $entity = $em->getRepository('myBundle:User')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('Unable to find User entity.');
        }

        $deleteForm = $this->createDeleteForm($id);
        $editForm = $this->createEditForm($entity);
        $editForm->handleRequest($request);

        if ($editForm->isValid()) {
            $em->flush();

            return $this->redirect($this->generateUrl('user_edit', array('id' => $id)));
        }

        return $this->render('myBundle:User:edit.html.twig', array(
            'entity'      => $entity,
            'edit_form'   => $editForm->createView(),
            'delete_form' => $deleteForm->createView(),
        ));
    }

1 个答案:

答案 0 :(得分:0)

为什么不在UserType构建器中定义角色字段?

class UserType extends AbstractType
{
        /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username')
            ->add('password')
            ->add('email')
            ->add('firstname')
            ->add('lastname')
            ->add('role','entity',array(
                'class' => 'vendor\Bundle\Entity\Role',
                'property'=>'role'
            ))
        ;
    }