0

我今天开始使用 symfony。我必须在表单中添加一个新字段并将其保存在表格中(橙色人力资源管理定制)。我创建了一个新的表单字段评论。我也改变了目标表。当我提交表单时,评论没有保存。我想我必须在 symfony 中进行一些配置才能将评论保存在数据库中。请帮我解决问题

编辑:我的代码是

    public function execute($request) { 

        $this->form = $this->getForm();

        print "<pre>";
    print_r($this->form->getValues());
    print "</pre>";

    //Output shows [comment] => dddd

    $leaveEntitlement = $this->getLeaveEntitlement($this->form->getValues());

    print "<pre>";
    print_r($leaveEntitlement);
    print "</pre>";



    LeaveEntitlement Object
    (
    [_node:protected] => 
    [_id:protected] => Array
    (
        [id] => 1
    )

    [_data:protected] => Array
    (
        [id] => 1
        [emp_number] => 3
        [no_of_days] => 384
        [days_used] => 0.0000
        [leave_type_id] => 2
        [from_date] => 2014-01-01 00:00:00
        [to_date] => 2014-01-31 00:00:00

        [credited_date] => 2014-01-30 00:00:00
        [note] => 
        [entitlement_type] => 1
        [deleted] => 0
        [created_by_id] => 1
        [created_by_name] => Admin
    )

    [_values:protected] => Array
    (
    )


    // It is not showing [comment] => dddd
}
4

1 回答 1

1

这个魔法必须发生在你的控制器中,你必须使用两件事:

你得打电话$form->handleRequest($request)

你还需要坚持你的实体$em->persist($entity)->flush()

这是一个基于您的代码的示例。这是您处理表单时控制器的一部分:

class YourController extends Controller
{
    public function executeAction($request)
    {
        $entity = new Comment;
        $form = $this->createForm(new CommentType(), $entity);

            $form->handleRequest($request);

            if ($form->isValid())
            {
                $em = $this->getDoctrine()->getManager(); // this is where it begins
                $em->persist($entity); // it goes on
                $em->flush(); // done!

                return $this->redirect($this->generateUrl('your_next_url'));
            }

            return $this->render('YourBundle:YourDirectory:template.html.twig', array(
                'form' => $form->createView(),
            ));
    }
}
于 2014-01-30T14:01:52.653 回答