似乎在Symfony 2中很难做到最简单的事情;
像这样:
我有一项服务,它返回文化:
public function getCultures()
{
$langs = LanguageQuery::create()->orderByPosition()->find();
$cultures = array();
foreach ($langs as $lang) {
$cultures[] = $lang->getCulture();
}
return $cultures;
}
我想在我的FormType中访问它:
现在..我无法在这里获取数据..(无法调用服务容器)..
而且我不想将$ CULTURES作为FormType的参数,(这意味着我必须覆盖每个控制器中的每个函数)..(这不太实用..)...所以有人有一个好的解决方案或者Symfony 1.4对于这个简单的事情更好..
$builder
->add('commentI18ns', 'propel1_translation_collection', array(
'languages' => array($CULTURES),
'label' => '',
'options' => array(
'columns' => array(
'name' => array('label' => 'Name'),
'description' => array(
'label' => 'Description',
'type' => 'textarea',
)
),
'data_class' => 'MyDataClass'
)
))
->add('is_active')
;
答案 0 :(得分:1)
您可以将表单类型实现为服务并执行以下操作:
$form = $this->createForm(new MyFormType(),...);
这样做:
$form = $this->createForm('my.custom_form_type'); // service id
然后,定义您的服务以接收EntityManager
作为参数。普雷斯托!您可以在表单类型中访问EntityManager
。
我已经回答了类似但有点复杂SO
问题 here 。