我正在使用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
}
}
?>
如何在不对数据库执行任何操作的情况下从表单获取数据?我应该使用实体吗?
答案 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