Php Symfony获取细枝形式主题中的实体名称

Php Symfony获取细枝形式主题中的实体名称,php,forms,twig,entity,symfony,Php,Forms,Twig,Entity,Symfony,我有一些表格类型。然后我创建表单,例如: $application = new \AppBundle\Entity\Application(); $applicationWidgetForm = $this->formFactory->create(\AppBundle\Form\WidgetApplicationType::class, $application); 在细枝上,我正在使用 {% form_theme applicationWidgetForm 'form.htm

我有一些表格类型。然后我创建表单,例如:

$application = new \AppBundle\Entity\Application();
$applicationWidgetForm  = $this->formFactory->create(\AppBundle\Form\WidgetApplicationType::class, $application);
在细枝上,我正在使用

{% form_theme applicationWidgetForm 'form.html.twig' %}
在这个表单主题中,我想获取属性名和实体名。我可以得到如下属性名(例如{%block form_widget%}):

但我不知道如何获取映射的实体名称。在本例中,我只想在这个表单主题中获得类似于
\AppBundle\Entity\Application()或AppBundle:Application
的内容(用作数据属性)

是否有可能以某种通用方式获得该值?是的,我可以在每个表单类型中设置,但我正在寻找更优雅的方式

谢谢你的回答


编辑:整个代码是这样的

控制器

$application = new \AppBundle\Entity\Application();
$applicationWidgetForm  = $this->formFactory->create(\AppBundle\Form\WidgetApplicationType::class, $application);
return $this->render('form/application_detail.html.twig', [
         'applicationForm' => $applicationWidgetForm->createView(),
    ]);
表单/应用程序_detail.html.twig

 {% form_theme applicationForm 'form.html.twig' %}
 {{ form(applicationForm) }}
{% block form_widget %}
{{ form.vars.name }} # with this, I can get property name. But what about entity name / class?
{% endblock form_widget %}
form.html.twig

 {% form_theme applicationForm 'form.html.twig' %}
 {{ form(applicationForm) }}
{% block form_widget %}
{{ form.vars.name }} # with this, I can get property name. But what about entity name / class?
{% endblock form_widget %}

您是否已在细枝模板中传递您的实体?渲染细枝模板时,可以将变量传递给。在控制器中:

return $this->render('your_own.html.twig', [
    'entity' => $application,
]);
但请注意,您的实体是空的。也许您想要呈现形式而不是实体?然后您需要将表单传递到视图中

return $this->render('your_own.html.twig', [
    'form' => $applicationWidgetForm->createView(),
]);

在你看来。

最终我使用了TypeExtension

class TextTypeExtension extends AbstractTypeExtension {

/**
 * Returns the name of the type being extended.
 *
 * @return string The name of the type being extended
 */
public function getExtendedType() {
    return TextType::class;
}

public function buildView(\Symfony\Component\Form\FormView $view, \Symfony\Component\Form\FormInterface $form, array $options) {
    $propertyName = $view->vars['name'];
    $entity = $form->getParent()->getData();

    $validationGroups = $form->getParent()->getConfig()->getOption('validation_groups');

    if ($entity) {
        if (is_object($entity)) {

            $entityName = get_class($entity); //full entity name
            $entityNameArr = explode('\\', $entityName);

            $view->vars['attr']['data-validation-groups'] = serialize($validationGroups);
            $view->vars['attr']['data-entity-name'] = array_pop($entityNameArr);
            $view->vars['attr']['data-property-name'] = $propertyName;
        }
    }
}

}

我没有提供完整的代码。我想在form_主题中获取实体名称,因此我想,很明显我也在使用{{form(applicationWidgetForm)}。这就是为什么我要写我正在使用{%form_主题应用程序widgetform'form.html.twig%}。没有“形式”功能,它将是无用的。。。