Symfony 2 сохранить данные - PullRequest
       10

Symfony 2 сохранить данные

0 голосов
/ 17 января 2012

Быстрый вопрос о сохранении данных в 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 ...
}

Моя проблема в том, что когда я выполняю действие index, продукт дважды сохраняется в моей базе данных.У кого-нибудь были подобные проблемы?Любой способ решить эту проблему?

Обновление: - полный тестовый класс контроллера:

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 ]

2 голосов
/ 20 января 2012

Я нашел проблему.Я пока не знаю, нормально ли это, но, по крайней мере, данные больше не дублируются.

Проблема была решена путем добавления перенаправления в метод 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'));
}
0 голосов
/ 19 июля 2013

У меня была похожая проблема в Symfony 1.4.

Я нашел

<img src=""> 

(без атрибута src), вызывает саму загрузку страницы. Это не проблема Symfony, это функция браузера: P

Может быть, у вас тоже есть.

...