3系の頃にも同じ設定をしたのだけれど、忘れてしまっていたので💦
改めてメモしておく!EC-CUBE4.3で編集するやつは下の3つ!
ファイル名 | パス | 編集内容 |
---|---|---|
ContactController.php | /src/Eccube/Controller/ |
ログインユーザーの 会社名(`company_name`)を取得し、フォームにセット ‘$user->getCompanyName(), を追加 |
ContactType.php | /src/Eccube/Form/Type/Front/ |
会社名フィールド(`company_name`)をフォームに追加 `add(‘company_name’, TextType::class, […])` を定義 |
contact/index.twig | /app/template/default/Contact/ |
フォームに 会社名の入力欄を追加 `{% form_widget(form.company_name) %}` を適切な場所に追加 |
ContactController.phpの編集するところ
public function index(Request $request)
{
$builder = $this->formFactory->createBuilder(ContactType::class);
if ($this->isGranted('ROLE_USER')) {
/** @var Customer $user */
$user = $this->getUser();
$builder->setData(
[
'name01' => $user->getName01(),
'name02' => $user->getName02(),
'kana01' => $user->getKana01(),
'kana02' => $user->getKana02(),
'postal_code' => $user->getPostalCode(),
'pref' => $user->getPref(),
'addr01' => $user->getAddr01(),
'addr02' => $user->getAddr02(),
'phone_number' => $user->getPhoneNumber(),
'email' => $user->getEmail(),
`$user->getCompanyName()` //①この行を追加
]
);
}
ContactType.phpの編集するところ
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', NameType::class, [
'required' => true,
])
->add('kana', KanaType::class, [
'required' => false,
])
->add('postal_code', PostalType::class, [
'required' => false,
])
->add('address', AddressType::class, [
'required' => false,
])
->add('phone_number', PhoneNumberType::class, [
'required' => false,
])
->add('email', EmailType::class, [
'constraints' => [
new Assert\NotBlank(),
new Email(null, null, $this->eccubeConfig['eccube_rfc_email_check'] ? 'strict' : null),
],
])
->add('contents', TextareaType::class, [
'constraints' => [
new Assert\NotBlank(),
new Assert\Length([
'max' => $this->eccubeConfig['eccube_lltext_len'],
])
],
])
// ②会社名の項目を追加
->add('company_name', TextType::class, [
'label' => '会社名',
'required' => false,
'attr' => ['class' => 'form-control'],
]);
}
contact/index.twigの編集するところ
<dl>
<dt>
{{ form_label(form.company_name, '会社名', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-input{{ has_errors(form.company_name) ? ' error' }}">
{{ form_widget(form.company_name) }}
{{ form_errors(form.company_name) }}
</div>
</dd>
</dl>