Найти div в блоке рендеринга в Symfony - PullRequest
1 голос
/ 30 сентября 2019

Я делаю сайт с Symfony 4. Я начинаю на этом фреймворке, и у меня проблема с дизайном на моем сайте. Я искал, откуда это может появиться, но я не могу найти код, который я хотел бы удалить.

Часть кода, которую я хотел бы удалить, следующая, потому что результат довольнонекрасиво: enter image description here

enter image description here

Я не могу найти это в своем коде:

в моем контроллере:

/**
 * @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')) }}

, если кто-нибудь может сказать мне, как найти код, это поможетменя очень много.

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Скорее всего, вы используете загрузочную тему 3/4 формы , и там работает стандартная форма макета шаблона .

Чтобы настроить текущую форму / другие элементы формы, используйте Учебное пособие «Как работать с темами формы» .

0 голосов
/ 01 октября 2019

Все делается под капотом, когда вы вызываете $form->createView().
Подводя итог, каждый тип поля в форме имеет базовый рендеринг с использованием блоков веток (как и сама форма), которые можно переопределить. Это то, что называется темой формы, есть базовая тема , обычно эта в прутике.

Вы можете создавать новые темы, расширять существующую или создавать событияименно то, что вам нужно для конкретной формы (подсказка: для этого используется функция getBlockPrefix в типе формы).

Всю документацию по визуализации формы можно найти здесь:
https://symfony.com/doc/current/form/form_customization.html

Большинство функций, описанных в этой документации, на самом деле вызывают ветки блоков форм тем, и документацию об этом можно найти здесь:
https://symfony.com/doc/current/form/form_themes.html

Имейте в виду: удаление такого класса / div может привести к поломке существующего CSS, отображению ошибок или всему, что делается в javascript для этого класса.

...