插入查询symfony 2没有形式

时间:2015-02-20 01:11:56

标签: mysql sql symfony entity dql

我正在使用Symfony 2,我需要在MySQL表中插入一些数据。我知道如何使用表单来做到这一点:

$m=new table();
$form=$this->container->get('form.factory')->create(new tableType(),$m);
$request=$this->getRequest();
if($request->getMethod()=='POST')
{
    $form->bind($request);  

    if ($form->isValid())

    {
        $rm=$this->container->get('doctrine')->getEntityManager();
        $rm->persist($m);
        $rm->flush();
    }

有效,但我不想使用预定义的表单,因为我需要对输入进行复杂的控制。我需要用jQuery生成值。 那么如何继续将输入的值插入到我的表中呢?

2 个答案:

答案 0 :(得分:0)

通常,您可以将整个请求传递给操作,如下所示

use Symfony\Component\HttpFoundation\Request;

// <...>

public function fooAction(Request $request)
{
  $foo = $request->query->get('foo', 'default_value_for_foo'); // get the foo param from request query string (GET params)
  $bar = $request->query->get('bar', 'default_value_for_bar'); // get the bar param from request POST params

}

您也可能对集合表单类型感兴趣,它可以允许您为表单生成多个行或实体(不固定)

答案 1 :(得分:0)

这比使用表单更容易:D

<?php
// ...

// fetch your params
$m = new table();
$m->setWhatever($request->get('whatever'));

// persist
$em = $this->get('doctrine.orm.entity_manager');
$em->persist($m);

注意:

  1. 使用驼峰式PHP类名称:例如表,NiceTable
  2. 我认为
  3. $form->bind已被弃用,请使用$form->handleRequest
  4. 无论如何,如果您需要验证您的输入,我建议您使用验证器和表单。设置模型并验证它非常聪明。当然,您不需要创建它的createView()视图,但Symfony中的验证组件非常强大:)。