BTOBのECサイトを作る
EC-CUBE4
Q:反映されない
A:本番環境にFTPなどでTwigファイルをアップロードして入れ替えた場合、画面を反映させるにはTwigキャッシュを削除する必要があります。
コンテンツ管理>キャッシュ管理>キャッシュ削除
EC-CUBEでログイン必須にする設定手順(例:商品詳細ページ)
1. src/Eccube/DependencyInjection/EccubeExtension.php を編集
初期設定
$accessControl = [
['path' => '^/%eccube_admin_route%/login', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
['path' => '^/%eccube_admin_route%/', 'roles' => 'ROLE_ADMIN'],
['path' => '^/mypage/login', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
['path' => '^/mypage/withdraw_complete', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
['path' => '^/mypage/change', 'roles' => 'IS_AUTHENTICATED_FULLY'],
['path' => '^/mypage/', 'roles' => 'ROLE_USER'],
];
if ($forceSSL) {
foreach ($accessControl as &$control) {
$control['requires_channel'] = 'https';
}
}
$accessControl = [
// 管理画面のログインは未ログインでもアクセス可能
['path' => '^/%eccube_admin_route%/login', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
// 管理画面は管理者のみアクセス可能
['path' => '^/%eccube_admin_route%/', 'roles' => 'ROLE_ADMIN'],
// 会員ログイン・登録ページは未ログインでもアクセス可能
['path' => '^/mypage/login', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
['path' => '^/entry', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
['path' => '^/help', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
// それ以外のページはログイン必須
['path' => '^/', 'roles' => 'ROLE_USER'],
];
会員登録フォームの項目を変更する手順
ファイルパス: src/Eccube/Form/Type/Front/EntryType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', NameType::class, [
'required' => true,
])
->add('kana', KanaType::class, [])
->add('company_name', TextType::class, [
'required' => false,
'constraints' => [
new Assert\Length([
'max' => $this->eccubeConfig['eccube_stext_len'],
]),
],
])
->add('postal_code', PostalType::class)
->add('address', AddressType::class)
->add('phone_number', PhoneNumberType::class, [
'required' => true,
])
->add('email', RepeatedEmailType::class)
->add('plain_password', RepeatedPasswordType::class)
->add('sex', SexType::class, [
'required' => false,
])
->add('job', JobType::class, [
'required' => false,
]);
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$Customer = $event->getData();
if ($Customer instanceof Customer && !$Customer->getId()) {
$form = $event->getForm();
$form->add('user_policy_check', CheckboxType::class, [
'required' => true,
'label' => null,
'mapped' => false,
'constraints' => [
new Assert\NotBlank(),
],
]);
}
}
);
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
$form = $event->getForm();
/** @var Customer $Customer */
$Customer = $event->getData();
if ($Customer->getPlainPassword() != '' && $Customer->getPlainPassword() == $Customer->getEmail()) {
$form['plain_password']['first']->addError(new FormError(trans('common.password_eq_email')));
}
});
}