我正在使用symfony 4做一个站点。我从这个框架开始,但是我的站点存在设计问题。我一直在寻找它的来源,但找不到我想要删除的代码。
我在我的代码中找不到:
在我的控制器中:
/**
* @return Response
*/
public function newLetterAction(Request $request): Response
{
$form = $this->createForm(CustomerNewsletterType::class, new Customer());
$form->handleRequest($request);
$facebook = $this->manager->getRepository(ExternalUrl::class)->findOneByCode('facebook');
$instagram = $this->manager->getRepository(ExternalUrl::class)->findOneByCode('instagram');
return $this->templatingEngine->renderResponse('@SyliusShop/Homepage/_newsletter.html.twig', [
'facebook' => $facebook,
'instagram' => $instagram,
'form' => $form->createView(),
'rova_refonte' => (in_array($this->container->get('request_stack')->getMasterRequest()->attributes->get('_route'),["sylius_shop_homepage"]) ? true : false)
]);
}
以我的formType:
class CustomerNewsletterType extends AbstractResourceType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', EmailType::class, [
'label' => 'app.ui.newsletter',
'attr' => [
'placeholder' => 'app.ui.email'
]
])
;
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix(): string
{
return 'app_customer_newsletter';
}
}
在我的树枝上:
{{ render(controller('app.controller.shop_homepage:newLetterAction')) }}
[如果有人可以告诉我如何查找代码,那将对我有很大帮助。
谢谢
当您致电$form->createView()
时,一切都在幕后完成。综上所述,表单中的每种类型的字段都有一个使用树枝块的基本渲染(表单本身也是如此),可以将其覆盖。这就是所谓的表单主题,在树枝桥中有一个基数which is usually this one。
您可以创建新主题,扩展现有主题,或事件创建特定表单所需的内容(提示:表单类型中的getBlockPrefix
函数用于此)。
您可以在此处找到有关表单渲染的所有文档:https://symfony.com/doc/current/form/form_customization.html
本文档中描述的大多数功能实际上都是调用表单主题的细枝块,您可以在此处找到有关此文档的文档:https://symfony.com/doc/current/form/form_themes.html
请紧记:删除此类/ div可能会破坏现有的CSS,错误呈现或针对此类的JavaScript所做的所有工作。
[最有可能您使用bootstrap 3/4 form theme,并且可以使用标准form_row template layout。
要自定义当前表单/其他表单元素,请使用"How to Work with Form Themes" tutorial。