【发布时间】:2015-01-06 18:27:32
【问题描述】:
标题说明了一切。我希望能够从我的实体中的 prePersist 函数中访问表单。像这样:
/** @ORM\PrePersist */
public function prePersist()
{
//Symfony 1.4 way
$params = sfContext::getInstance()->getRequest()->getParameterHolder()->getAll();
$this->gps84Long=$params['coordinate']['gps_84_lat_degrees'];
}
我需要这个的原因是因为表单值没有映射到数据库字段。我需要将 2-3 个表单字段组合成一个值,然后放入实体中的单个字段中。
EDIT-为提供的答案添加了 .yml 添加:
services:
my.doctrine.subscriber:
class: myCompany\myBundle\Models\MyDoctrineSubscriber
arguments: [@form.factory,"@request_stack"]
tags:
- { name: 'doctrine.event_subscriber', connection: 'default' }
【问题讨论】:
-
您是否考虑过使用可以将多个字段映射为一个的数据转换器? symfony.com/doc/current/cookbook/form/data_transformers.html。使用 onPersist 的问题在于,您可能还希望能够更新值,而 onUpdate 并不总是按预期工作。
-
感谢您的建议。您能否详细说明 onUpdate 的问题?