Tuỳ biến FormType

FormExtension

Làm việc với FormExtension

Cách làm

./app/Customize/Form/Extension/AbstractTypeExtensionBằng cách tạo tệp lớp chấp nhận kế thừa từ đó, nó sẽ tự động được nhận dạng là FormExtension.

Chỉ định loại công việc đã hoàn thành

Hàm getExtendsType là bắt buộc

public function getExtendedType()
{
    return EntryType::class;
}

Chức năng mở rộng

Bạn có thể tùy chỉnh biểu mẫu bằng cách ghi đè các hàm sau và thay đổi các tham số được truyền trong các đối số.

  • buildForm()
  • buildView()
  • configureOptions()
  • finishView()

EC – CUBE 4.0 sử dụng cấu trúc của FormExtension của Symfony.

Vui lòng xem tài liệu Symfony để biết chi tiết về cách mở rộng nó.

https://symfony.com/doc/current/form/create_form_type_extension.html

Template

Đây là một mẫu để mở rộng hình thức của trang đăng ký thành viên và thay đổi tên công ty thành mục yêu cầu.

./app/Customize/Form/Extension/CompanyNameRequiredExtension.php

<?php

namespace Customize\Form\Extension;

use Eccube\Form\Type\Front\EntryType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints\NotBlank;

class CompanyNameRequiredExtension extends AbstractTypeExtension
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $options = $builder->get('company_name')->getOptions();

        $options['required'] = true;
        $options['constraints'] = [ new NotBlank() ];
        $options['attr']['placeholder'] = 'Tên công ty';

        $builder->add('company_name', TextType::class, $options);
    }

    /**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
        return EntryType::class;
    }
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *