symfony 简易管理TextEditorField不接受html

apeeds0o  于 2022-11-16  发布在  其他
关注(0)|答案(3)|浏览(150)

我使用TextEditorField进行轻松管理,希望它能够接收HTML并理解它,以便只将文本显示为outpout。
但它显示了这样的<br>标记:

Michel Delatour<br>0909090909<br>78 avenue des charlottes<br>89512 Tartiflette<br>AF

我的crud控制器部分与字段:

TextEditorField::new('delivery', 'Adresse de livraison')->onlyOnDetail()

传送部分:

public function add(Cart $cart, Request $request): Response
    {

        $form = $this->createForm(OrderType::class, null, [
            'user' => $this->getUser()
        ]);

        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {

            $date = new DateTimeImmutable();
            $carriers = $form->get('carriers')->getData();
            $delivery = $form->get('addresses')->getData();
            $deliveryContent = $delivery->getFirstname() . ' ' . $delivery->getLastname();
            $deliveryContent .= '<br>' . $delivery->getPhone();

            if ($delivery->getCompany()) {
                $deliveryContent .= '<br>' . $delivery->getCompany();
            }

            $deliveryContent .= '<br>' . $delivery->getAdress();
            $deliveryContent .= '<br>' . $delivery->getPostcode() . ' ' . $delivery->getCity();
            $deliveryContent .= '<br>' . $delivery->getCountry();

            $reference = $date->format('dmy') . '-' . uniqid();

            $order = new Order();
            $order->setReference($reference);;
            $order->setCreatedAt($date);
            $order->setUserRelation($this->getUser());
            $order->setCarrierName($carriers->getName());
            $order->setCarrierPrice($carriers->getPrice());
            $order->setDelivery($deliveryContent);
            $order->setState(0);

            $this->entityManager->persist($order);

            foreach ($cart->getFull() as $product) {
                $orderDetails = new OrderDetails();
                $orderDetails->setOrderRelation($order);
                $orderDetails->setProduct($product['product']->getName());
                $orderDetails->setQuantity($product['quantity']);
                $orderDetails->setPrice($product['product']->getPrice());
                $orderDetails->setTotal($product['product']->getPrice() * $product['quantity']);
                $this->entityManager->persist($orderDetails);
            }

            $this->entityManager->flush();


            return $this->render('order/add.html.twig', [
                'cart' => $cart->getFull(),
                'carrier' => $carriers,
                'delivery' => $deliveryContent,
                'reference' => $order->getReference()
            ]);
        }
        return $this->redirectToRoute('cart');
    }
nzk0hqpo

nzk0hqpo1#

要解决这个问题,您可以创建一个自定义模板来呈现内容。

#templates/admin/field/text_editor.html.twig

{# @var ea \EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext #}
{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #}
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
{% if ea.crud.currentAction == 'detail' %}
    {{ field.value|raw }}
{% else %}
    {% set html_id = 'ea-text-editor-' ~ field.uniqueId %}
    <a href="#" data-bs-toggle="modal" data-bs-target="#{{ html_id }}">
        <i class="far fa-file-alt"></i> {{ 'field.text_editor.view_content'|trans([], domain = 'EasyAdminBundle') }}
    </a>

    <div class="modal fade" id="{{ html_id }}" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">{{ field.label }}</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"
                            aria-label="{{ 'action.close'|trans([], domain = 'EasyAdminBundle') }}">
                    </button>
                </div>
                <div class="modal-body">
                    {{ field.formattedValue|raw }}
                </div>
            </div>
        </div>
    </div>
{% endif %}

现在,您可以通过执行此操作来呈现内容

...
TextEditorField::new('delivery', 'Adresse de livraison')->setTemplatePath('admin/field/text_editor.html.twig')->onlyOnDetail(),
zphenhs4

zphenhs42#

您可以尝试以下操作:

TextareaField::new('...')->renderAsHtml();
htrmnn0y

htrmnn0y3#

你必须改变TextEditorField的文本字段,并添加renderAsHtml()。这将是工作!

TextField::new('delivery', 'Adresse de livraison')->onlyOnDetail()->renderAsHtml()

p-s:我在这里认识到代码从“学徒Symfony 5 par la creation d 'un site e-commerce”;)

相关问题