バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > FormExtensionがうまくいきません

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shimbo
投稿日時: 2018/12/18 5:35
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 27
FormExtensionがうまくいきません
[EC-CUBE] EC-CUBE3.0.16
[レンタルサーバ] XServer
[OS] FreeBSD 9.1-RELEASE-p24
[PHP] 5.6.36
[データベース] MySQL 5.7.16
[WEBサーバ] Apache
[ブラウザ] Chrome
[導入プラグインの有無] 自作中
[現象]

以下のようなコードでshoppingの画面にフォームを追加したいのですが、表示されていません。


//OrderTypeExtension.php
namespace Plugin\{プラグインコード}\Form\Extension;

use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;

class OrderTypeExtension extends AbstractTypeExtension
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(
                'plg_delivery_account', 'text', array(
                'required'=> false,
                'attr' => array(
                  'placeholder'=> 'Please enter Account No of your courier.'
                ),
                'mapped' =>false,
                )
            );
    }

    public function getExtendedType()
    {
        return 'order';
    }
}


    // {プラグインコード}ServiceProvider.php
    $app['form.type.extensions'] = $app->share($app->extend('form.type.extensions', function ($types) use ($app) {
        $types[] = new \Plugin\{プラグインコード}\Form\Extension\OrderTypeExtension();
        return $types;
    }));


index.twigでdump(Order)してみたのですが、値が入っていないようです。

Entityやデータベースには登録しないで処理をしたいのですが、そのせいでしょうか?

何かヒントを頂けたら幸いです。


468
投稿日時: 2018/12/18 9:36
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: FormExtensionがうまくいきません
shoppingの画面とは、フロントの「ご注文内容の確認」ページの事でしょうか?
もし、上記の画面に項目を追加したいのであれば、
ShoppingTypeが利用されていますので、
getExtendedType()で指定する値は「shopping」になるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shimbo
投稿日時: 2018/12/18 20:20
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 27
Re: FormExtensionがうまくいきません
> shoppingの画面とは、フロントの「ご注文内容の確認」ページの事でしょうか?

そうです。html/shoppingの画面です。(ページの名前を変えてしまったので「ご注文内容の確認」ではなくなってしまったのですが)

商品、顧客情報、配送先情報が表示される画面です。

> getExtendedType()で指定する値は「shopping」になるのではないかと思います。
shoppingは思いつきませんでした。formの中にちゃんと追加されていましたので、こちらでなんとか実装できそうです。

後学のために伺いたいのですが、このformがshoppingだという判断は、
$builder = $app['eccube.service.shopping']->getShippingFormBuilder($Order);

において、builderがeccube.service.shoppingに由来しているから、という理解で正しいのでしょうか?

とにもかくにも、助かりました。ありがとうございます。
468
投稿日時: 2018/12/19 11:17
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: FormExtensionがうまくいきません
まずは問題が解決されたという事で安心しました。

質問いただいたshoppingを判断した理由ですが、
$builder = $app['eccube.service.shopping']->getShippingFormBuilder($Order);

上記の記述で呼び出しているメソッド(/src/Eccube/Service/ShoppingService.php 1066行目 getShippingFormBuilder())の内容にある
$builder = $this->app['form.factory']->createBuilder('shopping', null, array(

createBuilder()の第1引数で判断しました。

今回のページについては、createBuilderはServiceクラスで実行されていますが、
他の画面の場合、コントローラーで直に呼び出されている事が多いので、
createBuilderを探せば、どのformtypeクラスを利用しているか判断できるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

shimbo
投稿日時: 2018/12/19 12:14
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 27
Re: FormExtensionがうまくいきません
なるほど!

getShippingFormBuilder()の中にまで追い切れていませんでした。
ありがとうございます。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.