没有数据库的实体

时间:2015-10-21 05:03:58

标签: symfony

我正在使用Symfony 2.7.x

我的目标:

1 /用户选择数字的表格

2 /表格提交

3 /借助提交的数据计算某些内容

4 /显示值

然后我想创建一个表单,一个实体,但我不需要任何数据库。

<?php

namespace RD\FicheBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use RD\FicheBundle\Entity\Donnees;
use RD\FicheBundle\Form\DonneesType;

class ThController extends Controller
{

// ... code

    public function calculsAction(Request $request)
    {

        $donnees = new Donnees();

        $form = $this->get('form.factory')->create(new DonneesType(), $donnees); 

        $form->handleRequest($request);

        if ($form->isValid())
            {

            // What should I use right here to get my data from the form?
            // ???????????????????????



            // My calculation

            $monney= $log_num*$surf_num*$ann_num*$chauff_num*$del_num;

            $CO2 = 200*$log_num*$surf_num*$ann_num*$chauff_num*$del_num;


            // Getting back the data to the template to display them

            return $this->render('RDFicheBundle:Th:calculs.html.twig', array(
            'form' => $form->createView(),
            'monney' => $monney,
            'CO2' => $CO2
            ));

            }

        // ... code


    }

}

?>

如何在不对数据库执行任何操作的情况下从表单获取数据?我应该使用实体吗?

1 个答案:

答案 0 :(得分:3)

如果您不告诉他们,表单不会指望任何存储/数据库层。 (比如字段类型:实体,以及其他类型的选项。)

在你的情况下: 从提交(或未提交)表单获取数据很简单

540

如果您在 $form->getData() 行之后执行此操作,则会收到提交的数据。

您还可以检查表单是否已提交$form->handleRequest($request);,返回布尔值true / false。

如果您希望表单将提交的数据填充到关联的实体(对象),则只需在表单类型中设置$form->isSubmitted(),如下所示

data_class
如果您有更复杂的场景,也可以为表单的单独字段(类型)设置

data_class选项。

这些文档应该可以帮助您: http://symfony.com/doc/current/book/forms.html#creating-form-classes

此处您还可以看到表单不会自动持久保存到db: http://symfony.com/doc/current/book/forms.html#forms-and-doctrine