Forms 如何在我的类型类中访问我的服务(DependencyInjection)?

Forms 如何在我的类型类中访问我的服务(DependencyInjection)?,forms,service,symfony,dependency-injection,Forms,Service,Symfony,Dependency Injection,我创建了一个服务(DependencyInjection),我在控制器上使用它作为: $this->get("service_name")->someMethod() 我想知道如何在我的表单类中使用它 下面是我的课堂示例: namespace Company\SampleBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class

我创建了一个服务(DependencyInjection),我在控制器上使用它作为:

$this->get("service_name")->someMethod()
我想知道如何在我的表单类中使用它

下面是我的课堂示例:

namespace Company\SampleBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class AnswerType extends AbstractType {

    public function buildForm(FormBuilder $builder, array $options) {
        // I want use: $this->get("service") here, how can i use that?
        $builder->add('answer', 'textarea');
    }

    public function getName() {
        return 'answer';
    }

    public function getDefaultOptions(array $options) {
        return array(
            'data_class' => 'Company\SampleBundle\Entity\Answer',
        );
    }

}

谢谢

您可以使用
$options
来实现这一点。这意味着您需要相应地修改
getDefaultOptions

 public function getDefaultOptions(array $options) {
    return array(
        'service'    => null,
        'data_class' => 'Company\SampleBundle\Entity\Answer',
    );
}
在控制器中,当您调用
createForm()
使用
$options
参数,如下所示:

$this->createForm('Answer', null, array('service' => $service))

@快乐开发者:你现在快乐吗?;-)谢谢我们如何从嵌套的表单类型执行操作?->add('items','collection',array('type'=>newitemtype('Item',null,array('service'=>$service)),…不,它不:(在itemType中,'service'是选项数组的键,这是预期的。但是它是null。我还尝试了一个简单的值:array('service'=>“testValue”)。哦,对,这很正常。使用
array('type'=>newitemtype(),'options'=>compact('service')
,类似于这样的选项…选项“service”不存在。已知选项有:“操作”、“允许额外字段”、“attr”、“自动初始化”、“块名”、“按引用”、“级联验证”、“复合”、“约束”、“csrf字段名”、“csrf消息”、“csrf保护”,“csrf\u提供程序”、“csrf\u令牌\u id”、“csrf\u令牌\u管理器”、“数据”、“数据\u类”、“禁用”、“空\u数据”、“错误\u冒泡”、“错误\u映射”、“额外字段\u消息”、“继承\u数据”、“意图”、“无效\u消息”、“无效\u消息参数”、“标签”、“标签属性”、“标签\u格式”、“映射”、“最大长度”、“方法”、“模式”“……这一期望被抛弃了