バージョン選択

フォーラム

メニュー

オンライン状況

72 人のユーザが現在オンラインです。 (63 人のユーザが フォーラム を参照しています。)
登録ユーザ: 2
ゲスト: 70
tokita mcontact もっと...

サイト内検索

質問 > フロント機能 > 【4.1.2-p1】購入画面の配送方法のプルダウンリストをラジオボタンに変更したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nanana723
投稿日時: 2024/6/1 23:39
対応状況: 解決済
常連
登録日: 2023/4/6
居住地:
投稿: 36
【4.1.2-p1】購入画面の配送方法のプルダウンリストをラジオボタンに変更したい
[EC-CUBE]4.1.2-p1 アップデート
[レンタルサーバ] Xサーバー
[OS] Linux sv32.sixcore.ne.jp 4.4.0-251-generic #285-Ubuntu SMP Fri Feb 2 23:04:19 UTC 2024 x86_64
[PHP] 7.4.33
[データベース] MySQL 5.7.32
[WEBサーバ] Apache
[ブラウザ] chrome
[導入プラグインの有無] 最短お届け日調整プラグイン(DeliveryDate4)
[カスタマイズの有無] 配送先の郵便番号によって送料を変更するカスタマイズ有
[現象] 購入画面の配送方法のプルダウンリストをラジオボタンに変更したいが、expandedをtrueにする指示を入れても反映されない

掲示板をご覧いただきありがとうございます。

購入画面の配送方法のプルダウンリストをラジオボタンに変更したいと思い、下記の内容でphpをアップロードしたのですが、デバッグモードで確認してもexpandedの変更が反映されずエラーも出ていません。

キャッシュの削除も試しましたが、変化はありませんでした。

下記のソース内に間違いはありますか?

ShippingTypeExtension.phpのソース

<?php

namespace Customize\Form\Extension\Shopping;

use Eccube\Form\Type\Shopping\ShippingType;
use Eccube\Common\EccubeConfig;
use Eccube\Entity\Delivery;
use Eccube\Entity\Shipping;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ShippingTypeExtension extends AbstractTypeExtension
{
	/**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
		// 配送方法をラジオボタンに変更.
		$builder->add('Delivery', EntityType::class, [
			'class' => Delivery::class,
			'choice_label' => 'name',
			'expanded' => true,
			'multiple' => false,
		]);
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'Eccube\Entity\Shipping',
        ]);
    }
	
    /**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
        return ShippingType::class;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function getExtendedTypes(): iterable
    {
        return [ShippingType::class];
    }
}


twigの該当部分のソース

前略

<div class="ec-orderDelivery__actions">
                            <div class="ec-selects">
                                <div class="ec-select">
                                    <label>{{ '配送方法'|trans }}</label>
                                    {{ form_widget(form.Shippings[idx].Delivery, { 'attr': { 'class': 'form-control', 'data-trigger': 'change' }}) }}
                                    {{ form_errors(form.Shippings[idx].Delivery) }}
                                </div> 
                                <div class="ec-select ec-select__delivery">
                                    <label>{{ 'お届け日'|trans }}</label>
                                    {{ form_widget(form.Shippings[idx].shipping_delivery_date, {'attr': {'class': 'form-control'}}) }}
                                    {{ form_errors(form.Shippings[idx].shipping_delivery_date) }}
                                </div>
                                <div class="ec-select ec-select__time">
                                    <label>{{ 'お届け時間'|trans }}</label>
                                    {{ form_widget(form.Shippings[idx].DeliveryTime, {'attr': {'class': 'form-control'}}) }}
                                    {{ form_errors(form.Shippings[idx].DeliveryTime) }}
                                </div>
                            </div>
                        </div>


後略

よろしくお願いします。
k.nakayama
投稿日時: 2024/6/3 13:50
対応状況: −−−
常連
登録日: 2019/10/11
居住地:
投稿: 59
Re: 【4.1.2-p1】購入画面の配送方法のプルダウンリストをラジオボタンに変更したい
デフォルトのShippingTypeをみてみてください。
FormEvents::PRE_SET_DATAでもDeliveryが追加されているので、その部分に対しても上書きしないと効きません。


----------------
----------------
ゴールドランク インテグレートパートナー U-Mebius

nanana723
投稿日時: 2024/6/4 0:37
対応状況: 解決済
常連
登録日: 2023/4/6
居住地:
投稿: 36
Re: 【4.1.2-p1】購入画面の配送方法のプルダウンリストをラジオボタンに変更したい
ご教授いただきありがとうございました。

教えていただいた内容を元に下記のようにソースを直したらやりたいことができるようになりました。

大変助かりました。
本当にありがとうございました。

<?php

namespace Customize\Form\Extension\Shopping;

use Eccube\Form\Type\Shopping\ShippingType;
use Symfony\Component\Form\AbstractTypeExtension;
use Eccube\Common\EccubeConfig;
use Eccube\Entity\Delivery;
use Eccube\Entity\DeliveryTime;
use Eccube\Entity\Shipping;
use Eccube\Repository\DeliveryFeeRepository;
use Eccube\Repository\DeliveryRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

class ShippingTypeExtension extends AbstractTypeExtension
{
	/**
     * @var DeliveryRepository
     */
    protected $deliveryRepository;
	
	/**
     * ShippingType constructor.
     *
     * @param DeliveryRepository $deliveryRepository
     */
    public function __construct(DeliveryRepository $deliveryRepository, DeliveryFeeRepository $deliveryFeeRepository)
    {
        $this->deliveryRepository = $deliveryRepository;
    }

	/**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
		// 配送業者のラジオボタンを生成
        $builder->addEventListener(
            FormEvents::PRE_SET_DATA,
            function (FormEvent $event) {
				/* @var Shipping $Shipping */
                $Shipping = $event->getData();
                if (is_null($Shipping) || !$Shipping->getId()) {
                    return;
                }

                // 配送商品に含まれる販売種別を抽出.
                $OrderItems = $Shipping->getProductOrderItems();
                $SaleTypes = [];
                foreach ($OrderItems as $OrderItem) {
                    $ProductClass = $OrderItem->getProductClass();
                    $SaleType = $ProductClass->getSaleType();
                    $SaleTypes[$SaleType->getId()] = $SaleType;
                }

                // 販売種別に紐づく配送業者を取得.
                $Deliveries = $this->deliveryRepository->getDeliveries($SaleTypes);
				
                // 配送業者のラジオボタンにセット
                $form = $event->getForm();
                $form->add(
                    'Delivery',
                    EntityType::class,
                    [
						'class' => 'Eccube\Entity\Delivery',
						'choices' => $Deliveries,
						'required' => true,
						'expanded' => true,
						'multiple' => false,
                    ]
                );
            }
        );
    }

    /**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
        return ShippingType::class;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function getExtendedTypes(): iterable
    {
        return [ShippingType::class];
    }
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,949名です
総投稿数は110,527件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1704
8
red
1571
9
mcontact
1401
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.