symfony 2保存数据

时间:2012-01-16 22:56:04

标签: symfony save doctrine-orm

关于在symfony中保存数据的快速问题2.我有这种方法(仅用于测试):

protected function createProduct()
{
    $product = new Product();
    $product->setName('My product');
    $product->setDescription('Lorem ipsum dolor sit amet');
    $product->setIsPublished(1);
    $product->setPosition(1);


    $em = $this->getDoctrine()->getEntityManager();
    $em->persist($product);
    $em->flush();
}

然后我有动作(仅用于测试):

public function indexAction()
{
    $this->createCategory();
    ...
    render ...
}

我的问题是,当我执行索引操作时,产品在我的数据库中保存两次。有没有人有类似的问题?有什么方法可以解决吗?

更新: - 完整控制器测试类:

namespace Test\CategoryBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Test\CategoryBundle\Entity\Category;
use Symfony\Component\HttpFoundation\Response;

class CategoryController extends Controller
{
    public function createAction()
    {
        $c = new Category();
        $c->setName('Category');
        $c->setDescription('Lorem ipsum dolor sit amet');
        $c->setIsPublished(1);
        $c->setPosition(1);


        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($c);
        $em->flush();

        return new Response('Created category id '.$c->getId());

    }

}

在src / Test / CategoryBundle / Resources / config / routing.yml中路由:

TestCategoryBundle_create:
    pattern:  /category/create
    defaults: { _controller: TestCategoryBundle:Category:create }

app / config / routing.yml中的路由:

TestCategoryBundle:
    resource: "@TestCategoryBundle/Resources/config/routing.yml"
    prefix:   /

2 个答案:

答案 0 :(得分:2)

我发现了问题。我不知道它是否正常,但至少数据不再重复了。

通过向createAction方法添加重定向解决了该问题。如果您不使用重定向,则数据将重复。这是正常的 ???无论如何,这是适合我的解决方案。

public function createAction()
{
    $c = new Category();
    $c->setName('My Category');
    $c->setDescription('Lorem ipsum dolor sit amet');
    $c->setIsPublished(1);
    $c->setPosition(1);

    $em = $this->getDoctrine()->getEntityManager();
    $em->persist($c);
    $em->flush();

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

答案 1 :(得分:0)

我在Symfony 1.4中遇到过类似的问题。

我找到了

<img src=""> 

(没有src atributte),它会导致页面加载。它不是一个symfony问题,它是一个浏览器功能:P

也许你也有。