如何从 Symfony2 中的摘要 class 中获取学说?
How to get doctrine from abstract class in Symfony2?
在我的代码中,我需要从数据库下载一些数据并将其放入表单,但我不知道如何在 Controller 之外获取 doctrone class。
我尝试创建新服务,但没有成功(我想我不能在这种情况下使用 __controller(),对吗?)。我也尝试将控制器的实例传输到 buildForm() 方法的参数,但我收到消息:FatalErrorException: Compile Error: Declaration of MyBundle\Form\Type\TemplateType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm()
)。
这是我的代码:
class TemplateType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('name', 'text')
// ...
->add('description', 'textarea');
}
public function getName() {
return 'template';
}
}
如何在 buildForm() 内部使用学说?
为了将数据从学说发送到您的表单,您需要在您的控制器中执行此操作:
public function doSomethingWithOneObjectAction( $id )
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository( 'AcmeBundle:ObjectEntity' )->find( $id );
if ( ! $entity) {
throw $this->createNotFoundException( 'Unable to find Object entity.' );
}
$form = $this->createForm(
new TemplateType(),
$entity
);
return array(
'entity' => $entity,
'form' => $form->createView()
);
}
如果要从表单类型中的容器访问服务,首先需要将其注册为服务并向其中注入所需的服务。类似于 this
在我的代码中,我需要从数据库下载一些数据并将其放入表单,但我不知道如何在 Controller 之外获取 doctrone class。
我尝试创建新服务,但没有成功(我想我不能在这种情况下使用 __controller(),对吗?)。我也尝试将控制器的实例传输到 buildForm() 方法的参数,但我收到消息:FatalErrorException: Compile Error: Declaration of MyBundle\Form\Type\TemplateType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm()
)。
这是我的代码:
class TemplateType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('name', 'text')
// ...
->add('description', 'textarea');
}
public function getName() {
return 'template';
}
}
如何在 buildForm() 内部使用学说?
为了将数据从学说发送到您的表单,您需要在您的控制器中执行此操作:
public function doSomethingWithOneObjectAction( $id )
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository( 'AcmeBundle:ObjectEntity' )->find( $id );
if ( ! $entity) {
throw $this->createNotFoundException( 'Unable to find Object entity.' );
}
$form = $this->createForm(
new TemplateType(),
$entity
);
return array(
'entity' => $entity,
'form' => $form->createView()
);
}
如果要从表单类型中的容器访问服务,首先需要将其注册为服务并向其中注入所需的服务。类似于 this