バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ご注文手続き画面に新たにラジオボタン項目を追加したい

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
gwkozaki
投稿日時: 2019/11/14 14:55
対応状況: −−−
常連
登録日: 2019/7/30
居住地: 日本
投稿: 53
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい
連絡が遅くなり失礼いたしました。
再び行き詰まってしまったため、ご教授いただけませんでしょうか。

あれからMasterTypeを利用すべく、
・Customize\Repository\Master\ExampleRepositoryの設置。
・ExampleテーブルをCustomize\Entity\Master\Exampleに移動し、dtbからmtbに変更。
・Customize\Form\Type\Master\ExampleTypeの追加。
・Customize\Form\Extension\Shopping\OrderTypeExtensionの追加。
・Customize\Entity\OrderTraitにてOrderテーブルにexample_id及びそのセッタとゲッタの設置。
を行いました。

【現状】
・mtbにテーブルの追加はできている。
・ご注文手続き、ご注文確認ともにデータの受け渡しはできており、表示もできる。
・注文確認画面で注文するボタンを押下すると、注文完了画面ではなく購入エラー画面に飛ばされる。
・購入エラー後にOrderテーブルを見ると、新たに受注が立っており、example_idに選択した値が含まれているが受注一覧には表示されていない。

【試したこと】
・ShoppingController.phpの以下の348行部分でvar_dumpを行ったところ、追加した値がNullになっている。
注文処理で一度OrderのUpdateが行われる際にNullになっているのではと考えていますが、間違いございませんでしょうか。
・エラーとしてはShoppingControllerの$form->isValid()がfalseになっていることで、注文処理に入ることすらできていない。(var_dump下のif文の条件が$form->isValid()がtrueでないと入れない。)

ShoppingController.php(一部抜粋)
// フォームの生成.
        $form = $this->createForm(OrderType::class, $Order, [
            // 確認画面から注文処理へ遷移する場合は, Orderエンティティで値を引き回すためフォーム項目の定義をスキップする.
            'skip_add_form' => true,
        ]);
        $form->handleRequest($request);
        var_dump($Order->getExampleId());exit; //☆この部分で取得した値がNullになっている。
        if ($form->isSubmitted() && $form->isValid()) {
            log_info('[注文処理] 注文処理を開始します.', [$Order->getId()]);

            try {
                /*
                 * 集計処理
                 */
                log_info('[注文処理] 集計処理を開始します.', [$Order->getId()]);
                $response = $this->executePurchaseFlow($Order);
                $this->entityManager->flush();



【分からないこと】
1.そもそもこのやり方で大丈夫かどうか。
2.処理として足りていない部分はどこか。
3.注文するボタン押下後、どのような処理が走るか。

以下に関連のあるソースを添付いたしますので、
おかしな点があればご指摘いただけたらありがたいです。
よろしくお願いいたします。

ExampleRepository.php
<?php

namespace Customize\Repository\Master;

use Customize\Entity\Master\Example;
use Symfony\Bridge\Doctrine\RegistryInterface;
use Eccube\Repository\AbstractRepository;

class ExampleRepository extends AbstractRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, Example::class);
    }
}


Example.php
<?php

namespace Customize\Entity\Master;

use Doctrine\ORM\Mapping as ORM;

/**
 * Example
 *
 * @ORM\Table(name="mtb_example")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
 * @ORM\HasLifecycleCallbacks()
 * @ORM\Entity(repositoryClass="Customize\Repository\Master\ExampleRepository")
 * @ORM\Cache(usage="NONSTRICT_READ_WRITE")
 */
class Example extends \Eccube\Entity\Master\AbstractMasterEntity
{
}
}


ExampleType.php
<?php

namespace Customize\Form\Type\Master;

use Eccube\Form\Type\MasterType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ExampleType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $options['example_options']['required'] = $options['required'];
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'class' => 'Customize\Entity\Master\Example',
            'expanded' => true,
            'placeholder' => false,
        ]);
    }

    public function getParent()
    {
        return MasterType::class;
    }

    public function getBlockPrefix()
    {
        return 'example';
    }
}


OrderTypeExtension.php
<?php

namespace Customize\Form\Extension\Shopping;

use Eccube\Entity\Order;
use Eccube\Form\Type\Shopping\OrderType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
use Customize\Form\Type\Master\ExampleType;

class OrderTypeExtension extends AbstractTypeExtension
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('example_id', ExampleType::class, [
            'label' => 'テストです',
            'required' => true,
            'expanded' => true,
            'multiple' => false,
            'constraints' => [
                new Assert\NotBlank(),
            ],
        ]);
    }

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


OrderTrait.php
<?php

namespace Customize\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation as Eccube;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @Eccube\EntityExtension("Eccube\Entity\Order")
 */
trait OrderTrait
{
    /**
     * @var \Customize\Entity\Master\Example
     * @ORM\ManyToOne(targetEntity="Customize\Entity\Master\Example")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="example_id", referencedColumnName="id", nullable=true)
     * })
     */
    private $Example;

    /**
     * @param \Customize\Entity\Master\Example|null $example_id
     * @return Order
     */
    public function setExampleId(\Customize\Entity\Master\Example $example_id = null)
    {
        $this->Example = $example_id;
        return $this;
    }

    /**
     * @return \Customize\Entity\Master\Example|null
     */
    public function getExampleId()
    {
        return $this->Example;
    }
}

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/12 15:31
     Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius 2019/11/12 23:59
       Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/13 10:48
     » Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/14 14:55
         Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius 2019/11/16 22:54
           Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/18 9:24
           Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/28 10:38
             Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius 2019/11/28 10:52
               Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/28 16:01
                 Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius 2019/11/28 18:59
                   Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2019/11/29 9:57
                     Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius 2019/11/29 14:24
                     Re: ご注文手続き画面に新たにラジオボタン項目を追加したい gwkozaki 2021/7/9 17:10

 



ログイン


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

統計情報

総メンバー数は88,711名です
総投稿数は109,948件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
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.