Symfony 无数据库实体

Symfony 无数据库实体,symfony,Symfony,我使用的是symfony2.7.x 我的目标: 1/用户选择图形的表格 2/提交表格 3/借助提交的数据计算一些东西 4/显示值 然后我想创建一个表单,一个实体,但我不需要任何数据库 <?php namespace RD\FicheBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; use S

我使用的是symfony2.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


    }

}

?>


如何在不使用数据库的情况下从表单中获取数据?我应该使用实体吗?

如果你不告诉表单管理员,他们就不需要任何存储/数据库层。(与字段类型类似:实体和其他字段上的选项。)

就你而言: 从已提交(或未提交)的表单中获取数据非常简单

 $form->getData()
如果在
$form->handleRequest($request)之后执行此操作行,您将获得提交的数据

您还可以检查表单是否随
$form->isSubmitted()
一起提交,后者返回布尔值true/false

如果希望表单将提交的数据填充到关联实体(对象),只需在表单类型中设置
data\u class
,如下所示

/**
 * @inheritdoc
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => 'Acme\AppBundle\Entity\Example'
    ]);
}
如果有更复杂的场景,还可以为表单的单独字段(类型)设置data_class选项

这些文档应该可以帮助您:

在这里,您还可以看到表单不会自动持久化到db:
$donnees
包含更新的数据(它是从
$form->getData()返回的数据)。您只需要做与通常相同的事情,只是不坚持模型。